> -----Original Message-----
> From: ivtv-devel-bounces@ivtvdriver.org [mailto:ivtv-devel-
> bounces@ivtvdriver.org] On Behalf Of Andy Walls
> Sent: Tuesday, November 10, 2009 9:32 PM
> To: ivtv-devel@ivtvdriver.org; linux-media@vger.kernel.org
> Subject: [ivtv-devel] cx18: Reprise of YUV frame alignment
improvements
>
> OK, here's my second attempt at getting rid of cx18 YUV frame
alignment
> and tearing issues.
>
> http://linuxtv.org/hg/~awalls/cx18-yuv2
>
> This change primarily implements full scatter-gather buffer handling
> between the cx18 driver and the CX23418 firmware. That in turn allows
> me to set the MDL size to have exactly one YUV frame per MDL transfer
> from the encoder to eliminate frame alignment issues, while using very
> small buffers that should not have anyone's machine go into a panic.
> (I
> also tweaked the VBI transfer size while I was at it.)
>
> I'm pretty happy with the results. I can run this set of streams
> simultaneously from one HVR-1600 and have witnessed no new cx18 driver
> issues on my machine:
>
> YUV: mplayer /dev/video32 -demuxer rawvideo -rawvideo
> w=720:h=480:format=hm12:ntsc
> PCM: aplay -f dat < /dev/video24
> VBI: ~/build/zvbi-0.2.30/test/osc -2
> MPEG: mplayer /dev/video0 -cache 8192
> ATSC: mplayer dvb://WTTG\ DT -cache 8192
>
> (ALSA or my soundcard couldn't mix together 3 streams of audio out to
> my
> speakers though. Only 2 streams, PCM and MPEG audio, were audible).
>
> The cx18 default YUV buffer size is now 3 * 33.75 kB = 3 full HM12
> macroblock sets that cover 32 screen lines for each macroblock set. A
> full NTSC frame requires 15 * 33.75 kB and a full PAL frame requires
18
> * 33.75 kB which is why I picked 3 * 33.75 kB. I don't anticipate
> anyone having problems with this new default YUV buffer size of about
> ~102 kB, since the current default YUV buffer size is 128 kB.
>
> (BTW the cx18 driver restricts YUV captures to sizes which are a
> multiple of 32 lines in height. I believe the reasoning is that the
> software HM12 decoders may not gracefully handle a partial macroblock
> set when not a multiple of 32 lines. This changeset is robust enough
> to
> handle lifting that restriction, if someone has a smart HM12 decoder
> that can handle partial macroblocks sensibly.)
>
>
>
> Could folks give this cx18 code a test to make sure their primary use
> cases didn't break?
>
>
> Regards,
> Andy
>
>
> _______________________________________________
> ivtv-devel mailing list
> ivtv-devel@ivtvdriver.org
> http://ivtvdriver.org/mailman/listinfo/ivtv-devel
Andy,
I have built this fine on my Debian Lenny box with a Backported kernel
2.6.30~bpo1, amd64 flavor.
However, I cannot build this on my mythbuntu box with a 2.6.31-amd64
kernel:
mgpaulus@mythbuntu1:~/cx18/cx18-yuv2$ make make -C
/home/mgpaulus/cx18/cx18-yuv2/v4l
make[1]: Entering directory `/home/mgpaulus/cx18/cx18-yuv2/v4l'
creating symbolic links...
make -C firmware prep
make[2]: Entering directory `/home/mgpaulus/cx18/cx18-yuv2/v4l/firmware'
make[2]: Leaving directory `/home/mgpaulus/cx18/cx18-yuv2/v4l/firmware'
make -C firmware
make[2]: Entering directory `/home/mgpaulus/cx18/cx18-yuv2/v4l/firmware'
make[2]: Nothing to be done for `default'.
make[2]: Leaving directory `/home/mgpaulus/cx18/cx18-yuv2/v4l/firmware'
Kernel build directory is /lib/modules/2.6.31-14-generic/build
make -C /lib/modules/2.6.31-14-generic/build
SUBDIRS=/home/mgpaulus/cx18/cx18-yu
v2/v4l modules
make[2]: Entering directory `/usr/src/linux-headers-2.6.31-14-generic'
CC [M] /home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.o
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:21:17: error: dma.h: No
such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:22:21: error:
csr1212.h: No such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:23:23: error:
highlevel.h: No such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:24:19: error: hosts.h:
No such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:25:22: error:
ieee1394.h: No such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:26:17: error: iso.h: No
such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:27:21: error:
nodemgr.h: No such file or directory
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:37: warning: 'struct
hpsb_iso' declared inside parameter list
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:37: warning: its scope
is only this definition or declaration, which is probably not what you
want
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'rawiso_activity_cb':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:53: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:54: error: implicit
declaration of function 'hpsb_iso_n_ready'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:61: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:62: error: implicit
declaration of function 'dma_region_i'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:62: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:62: error: expected
expression before 'unsigned'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:63: warning: assignment
makes pointer from integer without a cast
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:64: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:68: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:82: error: implicit
declaration of function 'hpsb_iso_recv_release_packets'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function 'node_of':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:87: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:87: warning: type
defaults to 'int' in declaration of '__mptr'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:87: warning:
initialization from incompatible pointer type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:87: error: invalid use
of undefined type 'struct unit_directory'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'node_lock':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:92: error: implicit
declaration of function 'hpsb_node_lock'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:92: error:
'EXTCODE_COMPARE_SWAP' undeclared (first use in this function)
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:92: error: (Each
undeclared identifier is reported only once
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:92: error: for each
function it appears in.)
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:93: error: 'quadlet_t'
undeclared (first use in this function)
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:93: error: expected ')'
before 'arg' /home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In
function 'node_read':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:98: error: implicit
declaration of function 'hpsb_node_read'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'node_write':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:103: error: implicit
declaration of function 'hpsb_node_write'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'start_iso':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:114: error: implicit
declaration of function 'hpsb_iso_recv_init'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:114: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:116: error:
'HPSB_ISO_DMA_DEFAULT' undeclared (first use in this function)
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:118: warning:
assignment makes pointer from integer without a cast
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:125: error: implicit
declaration of function 'hpsb_iso_recv_start'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:128: error: implicit
declaration of function 'hpsb_iso_shutdown'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'stop_iso':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:139: error: implicit
declaration of function 'hpsb_iso_stop'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: At top level:
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:154: warning: 'struct
hpsb_host' declared inside parameter list
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'fcp_request':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:167: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:168: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'node_probe':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:182: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:182: warning: type
defaults to 'int' in declaration of '__mptr'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:182: warning:
initialization from incompatible pointer type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:182: error: invalid use
of undefined type 'struct unit_directory'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:187: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:187: error: 'quadlet_t'
undeclared (first use in this function)
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:188: error: implicit
declaration of function 'CSR1212_TEXTUAL_DESCRIPTOR_LEAF_DATA'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:188: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:188: warning:
assignment makes pointer from integer without a cast
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: At top level:
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:243: warning: 'struct
unit_directory' declared inside parameter list
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'node_update':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:245: error:
dereferencing pointer to incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: At top level:
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:253: error: variable
'fdtv_driver' has initializer but incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:254: error: unknown
field 'name' specified in initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:254: warning: excess
elements in struct initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:254: warning: (near
initialization for 'fdtv_driver')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:255: error: unknown
field 'update' specified in initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:255: warning: excess
elements in struct initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:255: warning: (near
initialization for 'fdtv_driver')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:256: error: unknown
field 'driver' specified in initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:256: error: extra brace
group at end of initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:256: error: (near
initialization for 'fdtv_driver')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:259: warning: excess
elements in struct initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:259: warning: (near
initialization for 'fdtv_driver')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:262: error: variable
'fdtv_highlevel' has initializer but incomplete type
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:263: error: unknown
field 'name' specified in initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:263: warning: excess
elements in struct initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:263: warning: (near
initialization for 'fdtv_highlevel')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:264: error: unknown
field 'fcp request' specified in initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:264: warning: excess
elements in struct initializer
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:264: warning: (near
initialization for 'fdtv_highlevel')
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'fdtv_1394_init':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:271: error: implicit
declaration of function 'hpsb_register_highlevel'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:272: error: invalid use
of undefined type 'struct hpsb_protocol_driver'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:273: error: implicit
declaration of function 'hpsb_register_protocol'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:276: error: implicit
declaration of function 'hpsb_unregister_highlevel'
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c: In function
'fdtv_1394_exit':
/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.c:283: error: implicit
declaration of function 'hpsb_unregister_protocol'
make[3]: *** [/home/mgpaulus/cx18/cx18-yuv2/v4l/firedtv-1394.o] Error 1
make[2]: *** [_module_/home/mgpaulus/cx18/cx18-yuv2/v4l] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.31-14-generic'
make[1]: *** [default] Error 2
make[1]: Leaving directory `/home/mgpaulus/cx18/cx18-yuv2/v4l'
make: *** [all] Error 2
mgpaulus@mythbuntu1:~/cx18/cx18-yuv2$
_______________________________________________
ivtv-devel mailing list
ivtv-devel@ivtvdriver.org
http://ivtvdriver.org/mailman/listinfo/ivtv-devel