[vlc-devel] [vlc-commits] Add NTSC EIA-608 caption rendering support via V4L2 VBI devices
Rafaël Carré
funman at videolan.org
Sat Dec 15 21:08:11 CET 2012
Le 15/12/2012 21:05, Devin Heitmueller a écrit :
> Sorry for the delay in responding to this.
>
> On Thu, Dec 13, 2012 at 5:28 AM, Rafaël Carré <funman at videolan.org> wrote:
>> + {
>> + for (int i = 0; i < num_streams; i++)
>> + {
>> + block_t *p_sblock;
>> + if (p_es_subt[i] == NULL)
>> + continue;
>> + p_sblock = block_Duplicate(p_block);
>> + if (p_sblock)
>> + es_out_Send(p_demux->out, p_es_subt[i], p_sblock);
>> + }
>> + block_Release(p_block);
>>
>> num_streams = VBI_NUM_CC_STREAMS = 4
>>
>> But you will just duplicate the same information 4 times.
>>
>> Why duplicating at all?
>
> This is a result of the way the EIA-608 decoder in VLC expects to get
> the data (i.e. modules/codec/cc.c). One instance of the decoder gets
> created for each of the four possible CC streams. However the decoder
> is written such that it receives the entire block of VBI data for all
> streams and it picks out the parts relevant to the target stream it is
> associated with (based on the VLC_FOURCC code specified at
> instantiation). I can only assume it was done this way so that the
> caller doesn't have to take responsibility for parsing through the VBI
> bytes and figuring out which bytes should be sent to which stream.
>
> None of this was a result of the work done in my patch - it was all
> pre-existing code - and in fact if I recall I copied the original code
> from src/input/decoder.c (function DecoderGetCc).
>
> I'm not going to argue that this probably wasn't the best approach,
> and in fact isn't how I would have designed it. That said, it was
> outside of my scope to refactor the existing code and all the callers
> to clean it up. My goal was to bolt in the support for VBI via V4L,
> using the existing frameworks and conventions.
>
> Cheers,
>
> Devin
Thanks for your answer, I should take a look at this when I start 708
decoder :P
More information about the vlc-devel
mailing list