[FFmpeg-devel] [PATCH 2/2] avcodec/libzvbi-teletextdec: formatted ass output

Aman Gupta ffmpeg at tmm1.net
Fri May 18 04:29:23 EEST 2018


On Mon, May 7, 2018 at 4:20 PM, Aman Gupta <ffmpeg at tmm1.net> wrote:

>
>
> On Mon, May 7, 2018 at 4:07 PM, Marton Balint <cus at passwd.hu> wrote:
>
>>
>>
>> On Mon, 7 May 2018, Aman Gupta wrote:
>>
>>
>>>
>>> On Mon, May 7, 2018 at 12:50 PM, Aman Gupta <ffmpeg at tmm1.net> wrote:
>>>
>>>
>>>       On Sun, May 6, 2018 at 2:05 PM, Marton Balint <cus at passwd.hu>
>>> wrote:
>>>             Inspired by the VideoLAN text decoder and its port to FFmpeg
>>> made by Aman
>>>             Gupta.
>>>
>>>
>>> Thanks for incorporating my changes.
>>>
>>> I ran some tests, and colors work as expected. Positioning also works
>>> well, and is also pretty close to my version.
>>>
>>>
>>> I found that some live streams are not chopping empty lines correctly. I
>>> see extra newlines at the end:
>>>
>>>   Dialogue: 0,0:13:21.66,9:59:59.99,Default,,0,0,0,,{\an1}Simson,\hPeter\hHartcher,\hRobyn\hParker
>>> \Nand\hBenjamin \N \N \N
>>>
>>> Here's a sample which shows extra newlines: https://s3.amazonaws
>>> .com/tmm1/teletext/capture_live1.mpg
>>>
>>
>> This is kind of intentional, in this case the new lines are kept to
>> position the subtitles a bit higher, and not to the very bottom of the
>> screen, to keep the rough position of the teletext subtitles. At first I
>> used \pos as well, but it only worked once per line for me, so I had to use
>> some kind of newline-positioning anyway, and using native vertical
>> alignment instead of \pos seemed nicer. (E.g. it allows the user to change
>> left/right alignment text margins more easily in the headers or by an
>> override).
>
>
> Okay I see. I'm rendering my subtitles with a background so the large
> half-empty bounding box looked strange to me.
>
>
>>
>>
>>
>>> It also looks like the "erase page" command is not being processed,
>>> which causes stale captions to stay on the screen in some cases.
>>> This is especially confusing when part of an old caption remains on one
>>> line, but then newer captions appear on another line.
>>>
>>> Here's a sample that shows lines not being cleared correctly:
>>> https://s3.amazonaws.com/tmm1/teletext/simple.mpg
>>>
>>>
>>> With this sample, for instance, my decoder produces:
>>>
>>> Dialogue: 0,0:00:01.90,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}and
>>> this, as you rightly say,\N
>>> Dialogue: 0,0:00:01.94,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}and
>>> this, as you rightly say,\N{\an8}{\pos(192,231)}        {\c&HFFFFFF&}is
>>> American.\N
>>> Dialogue: 0,0:00:04.86,9:59:59.99,Default,,0,0,0,,
>>> Dialogue: 0,0:00:04.94,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,231)}{\c&HFFFFFF&}It's
>>> rather nicely made.\N
>>> Dialogue: 0,0:00:06.62,9:59:59.99,Default,,0,0,0,,
>>> Dialogue: 0,0:00:06.70,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}It's
>>> got this fabulous\N
>>> Dialogue: 0,0:00:06.74,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}It's
>>> got this fabulous\N{\an8}{\pos(192,231)}   {\c&HFFFFFF&}cast finial
>>> here\N
>>> Dialogue: 0,0:00:10.34,9:59:59.99,Default,,0,0,0,,
>>> Dialogue: 0,0:00:10.42,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}of
>>> a very muscular figure\N
>>> Dialogue: 0,0:00:10.46,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}of
>>> a very muscular figure\N{\an8}{\pos(192,231)} {\c&HFFFFFF&}pulling this
>>> medallion.\N
>>> Dialogue: 0,0:00:15.50,9:59:59.99,Default,,0,0,0,,
>>> Dialogue: 0,0:00:15.58,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}{\c&HFFFFFF&}So
>>> it's got strength to it. It's a\N
>>> Dialogue: 0,0:00:15.62,9:59:59.99,Default,,0,0,0,,{\an8}{\pos(192,213)}
>>> {\c&HFFFFFF&}So it's got strength to it. It's a\N{\an8}{\pos(192,231)}{\c&HFFFFFF&}really
>>> characterful piece of silver.\N
>>> Dialogue: 0,0:00:19.14,9:59:59.99,Default,,0,0,0,,
>>>
>>> And the decoder in this patch produces:
>>>
>>> Dialogue: 0,0:00:02.02,9:59:59.99,Default,,0,0,0,,{\an2}and\hthis,\has\hyou\hrightly\hsay,
>>> \Nis\hAmerican. \N
>>> Dialogue: 0,0:00:05.02,9:59:59.99,Default,,0,0,0,,{\an2}and\hthis,\has\hyou\hrightly\hsay,
>>> \NIt's\hrather\hnicely\hmade. \N
>>> Dialogue: 0,0:00:06.82,9:59:59.99,Default,,0,0,0,,{\an2}It's\hgot\hthis\hfabulous
>>> \Ncast\hfinial\hhere \N
>>> Dialogue: 0,0:00:10.54,9:59:59.99,Default,,0,0,0,,{\an2}of\ha\hvery\hmuscular\hfigure
>>> \Npulling\hthis\hmedallion. \N
>>> Dialogue: 0,0:00:15.70,9:59:59.99,Default,,0,0,0,,{\an2}So\hit's\hgot\hstrength\hto\hit.\hIt's\ha
>>> \Nreally\hcharacterful\hpiece\hof\hsilver. \N
>>> Dialogue: 0,0:00:19.30,9:59:59.99,Default,,0,0,0,,{\an2}So\hit's\hgot\hstrength\hto\hit.\hIt's\ha
>>> \NBut\hmost\himportant\hof\hall, \N
>>>
>>> At the ~5s mark, the text on the screen should say "It's rather nicely
>>> made", but this decoder still displays the line "and this as you rightly
>>> say" from the previous sentence.
>>>
>>
>> The mix of different subtitles showing up seems like a libzvbi bug :( ...
>> I will try to send a patch to sourceforge hoping it will get picked up and
>> integrated to a future release...
>>
>
> I'm curious how much code there is in libzvbi that we're actually? i.e.
> How practical would it be to import it into ffmpeg?
>

For reference, the patch to fix the issue I described above was submitted
by Marton here: https://sourceforge.net/p/zapping/patches/20/

To answer my own question, it would be impractical to import libzvbi as
there is quite a lot of code. The file touched by that patch alone is
several thousand lines long.

Aman


>
>
>>
>> Also there is a slight difference in how empty subtitles are forwarded.
>> For empty subtitles I always used AVSubtitleRect type AVSUBTITLE_NONE, you
>> used AVSUBTITLE_ASS. I prefer AVSUBTITLE_NONE, because with it
>> ffmpeg -fix_sub_duration creates a valid ass file without empty subtitles.
>
>
> Ah. Do those show up at all when using `-f ass`?
>
> Aman
>
>
>>
>>
>> I also have several other samples which use various features, available
>>> at the same URL:
>>>
>>> capture_formatting1.mpg
>>> capture_formatting2.mpg
>>> capture_formatting3.mpg
>>> capture_live1.mpg
>>> capture_live2.mpg
>>> capture_notCaptionedMessage.mpg
>>> capture_threeLines1.mpg
>>> capture_threeLines2.mpg
>>> capture_threeLines3.mpg
>>> capture_threeLines4.mpg
>>> capture_yOffset1.mpg
>>> three.ts
>>> four.ts
>>>
>>
>> I will have a look at those, thanks for your feedback.
>>
>> Regards,
>> Marton
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>
>


More information about the ffmpeg-devel mailing list