summaryrefslogtreecommitdiff
authorMichael Niedermayer <michaelni@gmx.at>2013-10-29 20:38:53 (GMT)
committer Michael Niedermayer <michaelni@gmx.at>2013-10-29 20:38:53 (GMT)
commit0460b9bb3e34472223084a6c3ad35b4ded9c276b (patch)
treea2b5d65619679309b96a8cc9b372c61ad0ab0afd
parent15b1b0887466f5c9ab3185a8fb62ebe54c0ff01b (diff)
parentc872d310cd9c605e5f994ad8ac79dc72303c0d29 (diff)
downloadffmpeg-0460b9bb3e34472223084a6c3ad35b4ded9c276b.zip
ffmpeg-0460b9bb3e34472223084a6c3ad35b4ded9c276b.tar.gz
ffmpeg-0460b9bb3e34472223084a6c3ad35b4ded9c276b.tar.bz2
Merge commit 'c872d310cd9c605e5f994ad8ac79dc72303c0d29'
* commit 'c872d310cd9c605e5f994ad8ac79dc72303c0d29': avconv: stop accessing AVStream.parser Conflicts: ffmpeg.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat
-rw-r--r--ffmpeg.c9
-rw-r--r--ffmpeg.h2
2 files changed, 10 insertions, 1 deletions
diff --git a/ffmpeg.c b/ffmpeg.c
index bbce98e..24b6bec 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -468,6 +468,8 @@ static void ffmpeg_cleanup(int ret)
output_streams[i]->bitstream_filters = NULL;
avcodec_free_frame(&output_streams[i]->filtered_frame);
+ av_parser_close(output_streams[i]->parser);
+
av_freep(&output_streams[i]->forced_keyframes);
av_expr_free(output_streams[i]->forced_keyframes_pexpr);
av_freep(&output_streams[i]->avfilter);
@@ -1467,7 +1469,10 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
&& ost->st->codec->codec_id != AV_CODEC_ID_MPEG2VIDEO
&& ost->st->codec->codec_id != AV_CODEC_ID_VC1
) {
- if (av_parser_change(ist->st->parser, ost->st->codec, &opkt.data, &opkt.size, pkt->data, pkt->size, pkt->flags & AV_PKT_FLAG_KEY)) {
+ if (av_parser_change(ost->parser, ost->st->codec,
+ &opkt.data, &opkt.size,
+ pkt->data, pkt->size,
+ pkt->flags & AV_PKT_FLAG_KEY)) {
opkt.buf = av_buffer_create(opkt.data, opkt.size, av_buffer_default_free, NULL, 0);
if (!opkt.buf)
exit_program(1);
@@ -2256,6 +2261,8 @@ static int transcode_init(void)
av_reduce(&codec->time_base.num, &codec->time_base.den,
codec->time_base.num, codec->time_base.den, INT_MAX);
+ ost->parser = av_parser_init(codec->codec_id);
+
switch (codec->codec_type) {
case AVMEDIA_TYPE_AUDIO:
if (audio_volume != 256) {
diff --git a/ffmpeg.h b/ffmpeg.h
index 054e718..c001d2c 100644
--- a/ffmpeg.h
+++ b/ffmpeg.h
@@ -371,6 +371,8 @@ typedef struct OutputStream {
int copy_prior_start;
int keep_pix_fmt;
+
+ AVCodecParserContext *parser;
} OutputStream;
typedef struct OutputFile {