diff options
author | Anton Khirnov <anton@khirnov.net> | 2014-02-19 18:49:48 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2014-03-24 06:07:51 +0100 |
commit | 59444c76e6d43529a12dbd80b6dd29c6ba4079a9 (patch) | |
tree | d9c1133972a4d36d7a4ceac2642285ea5bfcf68f | |
parent | 4a0f6651434c6f213d830140f575b4ec7858519f (diff) | |
download | ffmpeg-59444c76e6d43529a12dbd80b6dd29c6ba4079a9.tar.gz |
avconv: add stream-global side data to the first demuxed packet
-rw-r--r-- | avconv.c | 17 | ||||
-rw-r--r-- | avconv.h | 3 |
2 files changed, 20 insertions, 0 deletions
@@ -2223,9 +2223,26 @@ static int process_input(void) goto discard_packet; ist = input_streams[ifile->ist_index + pkt.stream_index]; + ist->nb_packets++; if (ist->discard) goto discard_packet; + /* add the stream-global side data to the first packet */ + if (ist->nb_packets == 1) + for (i = 0; i < ist->st->nb_side_data; i++) { + AVPacketSideData *src_sd = &ist->st->side_data[i]; + uint8_t *dst_data; + + if (av_packet_get_side_data(&pkt, src_sd->type, NULL)) + continue; + + dst_data = av_packet_new_side_data(&pkt, src_sd->type, src_sd->size); + if (!dst_data) + exit_program(1); + + memcpy(dst_data, src_sd->data, src_sd->size); + } + if (pkt.dts != AV_NOPTS_VALUE) pkt.dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base); if (pkt.pts != AV_NOPTS_VALUE) @@ -233,6 +233,9 @@ typedef struct InputStream { AVDictionary *opts; AVRational framerate; /* framerate forced with -r */ + /* number of packets successfully read for this stream */ + uint64_t nb_packets; + int resample_height; int resample_width; int resample_pix_fmt; |