Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Bœsch <ubitux@gmail.com>2012-05-27 00:36:31 +0400
committerClément Bœsch <ubitux@gmail.com>2012-05-29 23:33:28 +0400
commitd51e08bb89f7a93f471bc14ad00c14ac986cfcf0 (patch)
tree8675f875aad6e370b73ef62e0abcb02bd5d989d9 /libavcodec/microdvddec.c
parente7cb161515fc9fb6d30d1681d64d9ba7ad737a4e (diff)
lavc: switch from ts_end to duration in ff_ass_add_rect.
Make possible a end-to-presentation duration.
Diffstat (limited to 'libavcodec/microdvddec.c')
-rw-r--r--libavcodec/microdvddec.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavcodec/microdvddec.c b/libavcodec/microdvddec.c
index 083efdb94f..33a75c4f9e 100644
--- a/libavcodec/microdvddec.c
+++ b/libavcodec/microdvddec.c
@@ -261,10 +261,6 @@ static int microdvd_decode_frame(AVCodecContext *avctx,
char *decoded_sub;
char *line = avpkt->data;
char *end = avpkt->data + avpkt->size;
- int64_t frame_start = avpkt->pts;
- int64_t frame_end = avpkt->pts + avpkt->duration;
- int ts_start = av_rescale_q(frame_start, avctx->time_base, (AVRational){1,100});
- int ts_end = av_rescale_q(frame_end, avctx->time_base, (AVRational){1,100});
struct microdvd_tag tags[sizeof(MICRODVD_TAGS) - 1] = {{0}};
if (avpkt->size <= 0)
@@ -299,8 +295,14 @@ static int microdvd_decode_frame(AVCodecContext *avctx,
end:
av_bprint_finalize(&new_line, &decoded_sub);
- if (*decoded_sub)
- ff_ass_add_rect(sub, decoded_sub, ts_start, ts_end, 0);
+ if (*decoded_sub) {
+ int64_t start = avpkt->pts;
+ int64_t duration = avpkt->duration;
+ int ts_start = av_rescale_q(start, avctx->time_base, (AVRational){1,100});
+ int ts_duration = duration != -1 ?
+ av_rescale_q(duration, avctx->time_base, (AVRational){1,100}) : -1;
+ ff_ass_add_rect(sub, decoded_sub, ts_start, ts_duration, 0);
+ }
av_free(decoded_sub);
*got_sub_ptr = sub->num_rects > 0;