[FFmpeg-devel] Test case for Closed caption decoder.

Michael Niedermayer michaelni at gmx.at
Sun May 3 23:39:46 CEST 2015


On Sun, May 03, 2015 at 08:53:14PM +0200, Clément Bœsch wrote:
> On Sun, May 03, 2015 at 06:46:15PM +0530, Anshul wrote:
> > 
> > 
> > On 05/02/2015 08:24 PM, Clément Bœsch wrote:
> > >On Tue, Apr 28, 2015 at 07:50:15PM +0530, Anshul wrote:
> > >>
> > >>On 04/28/2015 02:14 PM, Clément Bœsch wrote:
> > >>>Then FATE test patch should be applied after the CC patch.
> > >>>
> > >>New patch attached. I have used other ass api.
> > >>>>+fate-sub-cc: CMD = fmtstdout ass -f lavfi -i "movie=$(TARGET_SAMPLES)/sub/Closedcaption_atsc_rollup.ts[out0+subcc]"
> > >>>BTW, do we really need to go through libavfilter to extract the cc?
> > >>Yes, there is no other way then libavfilter that I know. Closed caption was
> > >>possible only after nicolas patch.
> > >>if you want more details, Why libavfilter was chosen, you might need to read
> > >>last year's mail chain.
> > >>there has been long debate on it. so I don't want to indulge myself again in
> > >>it.
> > >>>>+
> > >>>>  FATE_SUBTITLES_ASS-$(call DEMDEC, JACOSUB, JACOSUB) += fate-sub-jacosub
> > >>>>  fate-sub-jacosub: CMD = fmtstdout ass -i $(TARGET_SAMPLES)/sub/JACOsub_capability_tester.jss
> > >>>>diff --git a/tests/ref/fate/sub-cc b/tests/ref/fate/sub-cc
> > >>>>new file mode 100644
> > >>>>index 0000000..035a51a
> > >>>>--- /dev/null
> > >>>>+++ b/tests/ref/fate/sub-cc
> > >>>>@@ -0,0 +1,38 @@
> > >>>>+[Script Info]
> > >>>>+; Script generated by FFmpeg/Lavc
> > >>>>+ScriptType: v4.00+
> > >>>>+PlayResX: 384
> > >>>>+PlayResY: 288
> > >>>>+
> > >>>>+[V4+ Styles]
> > >>>>+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
> > >>>>+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
> > >>>>+
> > >>>>+[Events]
> > >>>>+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
> > >>>>+Dialogue: 0,0:00:36.87,0:00:38.37,Default,,0,0,0,,( explosion )
> > >>>>+Dialogue: 0,0:00:38.37,0:00:40.51,Default,,0,0,0,,( explosion )\N( inaudible radio chatter )
> > >>>>+Dialogue: 0,0:00:40.51,0:00:41.88,Default,,0,0,0,,( inaudible radio chatter )\N>> Safety remains our number one
> > >>>>+Dialogue: 0,0:00:41.88,0:00:43.34,Default,,0,0,0,,>> Safety remains our number one\Npriority.
> > >>>>+Dialogue: 0,0:00:43.34,0:00:44.51,Default,,0,0,0,,priority.\N>> BP can talk about safety all
> > >>>>+Dialogue: 0,0:00:44.51,0:00:45.88,Default,,0,0,0,,>> BP can talk about safety all\Nthey want, but they're not going
> > >>>>+Dialogue: 0,0:00:45.88,0:00:47.95,Default,,0,0,0,,they want, but they're not going\Nto become a safer company.
> > >>>>+Dialogue: 0,0:00:47.95,0:00:49.52,Default,,0,0,0,,to become a safer company.\N>> They base everything on risk.
> > >>>>+Dialogue: 0,0:00:49.52,0:00:50.65,Default,,0,0,0,,>> They base everything on risk.\N"How many lives can we afford to
> > >>>>+Dialogue: 0,0:00:50.65,0:00:51.65,Default,,0,0,0,,"How many lives can we afford to\Nlose before we need to deal with
> > >>>>+Dialogue: 0,0:00:51.65,0:00:52.55,Default,,0,0,0,,lose before we need to deal with\Nthis?"
> > >>>>+Dialogue: 0,0:00:52.55,0:00:53.25,Default,,0,0,0,,this?"\N>> 9-1.
> > >>>>+Dialogue: 0,0:00:53.25,0:00:55.22,Default,,0,0,0,,>> 9-1.\N>> Yes, this plant just blew up!
> > >>>>+Dialogue: 0,0:00:55.22,0:00:57.19,Default,,0,0,0,,>> Yes, this plant just blew up!\N>> From Texas and Alaska to the
> > >>>>+Dialogue: 0,0:00:57.19,0:00:58.39,Default,,0,0,0,,>> From Texas and Alaska to the\NGulf of Mexico...
> > >>>>+Dialogue: 0,0:00:58.39,0:01:00.19,Default,,0,0,0,,Gulf of Mexico...\N>> BP apologized again...
> > >>>>+Dialogue: 0,0:01:00.19,0:01:02.33,Default,,0,0,0,,>> BP apologized again...\N>> ... Apology after apology.
> > >>>>+Dialogue: 0,0:01:02.33,0:01:03.10,Default,,0,0,0,,>> ... Apology after apology.\N>> They pledged repeatedly to
> > >>>>+Dialogue: 0,0:01:03.10,0:01:05.40,Default,,0,0,0,,>> They pledged repeatedly to\Nrun a safer operation, yet they
> > >>>>+Dialogue: 0,0:01:05.40,0:01:07.17,Default,,0,0,0,,run a safer operation, yet they\Ncontinued to cut costs.
> > >>>>+Dialogue: 0,0:01:07.17,0:01:08.67,Default,,0,0,0,,continued to cut costs.\N>> We have a facility here that
> > >>>>+Dialogue: 0,0:01:08.67,0:01:10.17,Default,,0,0,0,,>> We have a facility here that\Ncould produce a cloud of gas
> > >>>>+Dialogue: 0,0:01:10.17,0:01:11.57,Default,,0,0,0,,could produce a cloud of gas\Nthat would make this place look
> > >>>>+Dialogue: 0,0:01:11.57,0:01:13.04,Default,,0,0,0,,that would make this place look\Nlike Hiroshima.
> > >>>>+Dialogue: 0,0:01:13.04,0:01:15.21,Default,,0,0,0,,like Hiroshima.\N>> What went wrong at BP?
> > >>>>+Dialogue: 0,0:01:15.21,0:01:17.11,Default,,0,0,0,,>> What went wrong at BP?\N>> The culture of BP management
> > >>>This output looks better.
> > >>>
> > >>>
> > >>>
> > >>>_______________________________________________
> > >>>ffmpeg-devel mailing list
> > >>>ffmpeg-devel at ffmpeg.org
> > >>>http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> > >> From 13dedb5bd7df3efd88f6a3b0dbc521e869d8f6a2 Mon Sep 17 00:00:00 2001
> > >>From: Anshul Maheshwari <er.anshul.maheshwari at gmail.com>
> > >>Date: Tue, 28 Apr 2015 19:41:28 +0530
> > >>Subject: [PATCH] Correcting jumbled ass of captions
> > >>
> > >>Signed-off-by: Anshul Maheshwari <er.anshul.maheshwari at gmail.com>
> > >>---
> > >>  libavcodec/ccaption_dec.c | 6 +++++-
> > >>  1 file changed, 5 insertions(+), 1 deletion(-)
> > >>
> > >>diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c
> > >>index da43ca6..540e17f 100644
> > >>--- a/libavcodec/ccaption_dec.c
> > >>+++ b/libavcodec/ccaption_dec.c
> > >>@@ -338,6 +338,10 @@ static int reap_screen(CCaptionSubContext *ctx, int64_t pts)
> > >>          }
> > >>      }
> > >>+    if(screen->row_used) {
> > >>+        ctx->buffer.len -= 2;
> > >>+        ctx->buffer.str[ctx->buffer.len] = 0;
> > >>+    }
> > >Please add an extra check about the ctx->buffer.len being >= 2
> > >
> > >>      ctx->startv_time = pts;
> > >>      ctx->end_time = pts;
> > >>      return ret;
> > >>@@ -550,7 +554,7 @@ static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avp
> > >>              int start_time = av_rescale_q(ctx->start_time, avctx->time_base, (AVRational){ 1, 100 });
> > >>              int end_time = av_rescale_q(ctx->end_time, avctx->time_base, (AVRational){ 1, 100 });
> > >>              av_dlog(ctx, "cdp writing data (%s)\n",ctx->buffer.str);
> > >>-            ret = ff_ass_add_rect(sub, ctx->buffer.str, start_time, end_time - start_time , 0);
> > >>+            ret = ff_ass_add_rect_bprint(sub, &ctx->buffer, start_time, end_time - start_time);
> > >>              if (ret < 0)
> > >>                  return ret;
> > >>              sub->pts = av_rescale_q(ctx->start_time, avctx->time_base, AV_TIME_BASE_Q);
> > >LGTM otherwise
> > >
> > New patch attached.
> > 
> > -Anshul
> 
> > From 5e801ff90102f886507213bab7a7e1e827e5b2ab Mon Sep 17 00:00:00 2001
> > From: Anshul Maheshwari <er.anshul.maheshwari at gmail.com>
> > Date: Sun, 3 May 2015 18:37:40 +0530
> > Subject: [PATCH] correcting line breaks in cc
> > 
> > Signed-off-by: Anshul Maheshwari <er.anshul.maheshwari at gmail.com>
> > ---
> >  libavcodec/ccaption_dec.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> > 
> > diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c
> > index da43ca6..264d21c 100644
> > --- a/libavcodec/ccaption_dec.c
> > +++ b/libavcodec/ccaption_dec.c
> > @@ -338,6 +338,10 @@ static int reap_screen(CCaptionSubContext *ctx, int64_t pts)
> >          }
> >  
> >      }
> > +    if(screen->row_used && ctx->buffer.len >= 2 ) {
> > +        ctx->buffer.len -= 2;
> > +        ctx->buffer.str[ctx->buffer.len] = 0;
> > +    }
> >      ctx->startv_time = pts;
> >      ctx->end_time = pts;
> >      return ret;
> > @@ -550,7 +554,7 @@ static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avp
> >              int start_time = av_rescale_q(ctx->start_time, avctx->time_base, (AVRational){ 1, 100 });
> >              int end_time = av_rescale_q(ctx->end_time, avctx->time_base, (AVRational){ 1, 100 });
> >              av_dlog(ctx, "cdp writing data (%s)\n",ctx->buffer.str);
> > -            ret = ff_ass_add_rect(sub, ctx->buffer.str, start_time, end_time - start_time , 0);
> > +            ret = ff_ass_add_rect_bprint(sub, &ctx->buffer, start_time, end_time - start_time);
> >              if (ret < 0)
> >                  return ret;
> >              sub->pts = av_rescale_q(ctx->start_time, avctx->time_base, AV_TIME_BASE_Q);
> 
> LGTM (apart from the style, but the whole file is broken in that regard
> anyway)

patch applied

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Breaking DRM is a little like attempting to break through a door even
though the window is wide open and the only thing in the house is a bunch
of things you dont want and which you would get tomorrow for free anyway
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150503/f3cea235/attachment.asc>


More information about the ffmpeg-devel mailing list