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 managementThis output looks better. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-develFrom 13dedb5bd7df3efd88f6a3b0dbc521e869d8f6a2 Mon Sep 17 00:00:00 2001 From: Anshul Maheshwari <er.anshul.maheshw...@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.maheshw...@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 >= 2ctx->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.maheshw...@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.maheshw...@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); -- 2.1.4
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel