Author: gkovacs
Date: Wed Aug 26 07:58:26 2009
New Revision: 5289
Log:
include current duration in summed durations list
Modified:
concat/libavformat/avplaylist.h
concat/libavformat/concatgen.c
concat/libavformat/playlist.c
Modified: concat/libavformat/avplaylist.h
==============================================================================
--- concat/libavformat/avplaylist.h Wed Aug 26 07:51:19 2009 (r5288)
+++ concat/libavformat/avplaylist.h Wed Aug 26 07:58:26 2009 (r5289)
@@ -44,7 +44,7 @@ typedef struct AVPlaylistContext {
AVFormatContext **formatcontext_list; /**< List of AVFormatContext for
each playlist item */
int pelist_size; /**< Number of playlist elements
stored in formatcontext_list */
int pe_curidx; /**< Index of the AVFormatContext
in formatcontext_list that packets are being read from */
- int64_t *durations; /**< Sum of previous durations, in
AV_TIME_BASE units, for each playlist item */
+ int64_t *durations; /**< Sum of current and previous
durations, in AV_TIME_BASE units, for each playlist item */
unsigned int *nb_streams_list; /**< Sum of current and previous
number of streams in each playlist item*/
AVFormatContext *master_formatcontext; /**< Parent AVFormatContext of
which priv_data is this playlist. NULL if playlist is used standalone. */
} AVPlaylistContext;
Modified: concat/libavformat/concatgen.c
==============================================================================
--- concat/libavformat/concatgen.c Wed Aug 26 07:51:19 2009 (r5288)
+++ concat/libavformat/concatgen.c Wed Aug 26 07:58:26 2009 (r5289)
@@ -61,9 +61,11 @@ int ff_concatgen_read_packet(AVFormatCon
pkt->stream_index = stream_index + streams_offset;
if (!ic->streams[stream_index]->codec->has_b_frames ||
ic->streams[stream_index]->codec->codec->id ==
CODEC_ID_MPEG1VIDEO) {
- int64_t time_offset_localbase =
av_rescale_q(ctx->durations[ctx->pe_curidx],
-
AV_TIME_BASE_Q,
-
ic->streams[stream_index]->time_base);
+ int64_t time_offset_localbase = 0;
+ if (ctx->pe_curidx > 0)
+ time_offset_localbase =
av_rescale_q(ctx->durations[ctx->pe_curidx - 1],
+ AV_TIME_BASE_Q,
+
ic->streams[stream_index]->time_base);
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts += time_offset_localbase;
if (pkt->pts != AV_NOPTS_VALUE)
Modified: concat/libavformat/playlist.c
==============================================================================
--- concat/libavformat/playlist.c Wed Aug 26 07:51:19 2009 (r5288)
+++ concat/libavformat/playlist.c Wed Aug 26 07:58:26 2009 (r5289)
@@ -86,7 +86,7 @@ int ff_playlist_populate_context(AVPlayl
ctx->durations[pe_curidx] = ctx->durations[pe_curidx - 1] +
ctx->formatcontext_list[pe_curidx]->duration;
ctx->nb_streams_list[pe_curidx] = ctx->nb_streams_list[pe_curidx - 1]
+ ctx->formatcontext_list[pe_curidx]->nb_streams;
} else {
- ctx->durations[pe_curidx] = 0;
+ ctx->durations[pe_curidx] =
ctx->formatcontext_list[pe_curidx]->duration;
ctx->nb_streams_list[pe_curidx] =
ctx->formatcontext_list[pe_curidx]->nb_streams;
}
return 0;
_______________________________________________
FFmpeg-soc mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc