summaryrefslogtreecommitdiffstats
path: root/common/av_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/av_common.c')
-rw-r--r--common/av_common.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/av_common.c b/common/av_common.c
index 6efa1803fd..e40c751e9f 100644
--- a/common/av_common.c
+++ b/common/av_common.c
@@ -25,9 +25,12 @@
#include <libavutil/cpu.h>
#include <libavcodec/avcodec.h>
+#include "config.h"
+
#include "common/common.h"
#include "common/msg.h"
#include "demux/packet.h"
+#include "demux/stheader.h"
#include "av_common.h"
#include "codecs.h"
@@ -68,6 +71,19 @@ void mp_copy_lav_codec_headers(AVCodecContext *avctx, AVCodecContext *st)
avctx->has_b_frames = st->has_b_frames;
}
+// This only copies ffmpeg-native codec parameters. Parameters produced by
+// other demuxers must be handled manually.
+void mp_set_lav_codec_headers(AVCodecContext *avctx, struct mp_codec_params *c)
+{
+#if HAVE_AVCODEC_HAS_CODECPAR
+ if (c->lav_codecpar)
+ avcodec_parameters_to_context(avctx, c->lav_codecpar);
+#else
+ if (c->lav_headers)
+ mp_copy_lav_codec_headers(avctx, c->lav_headers);
+#endif
+}
+
// We merely pass-through our PTS/DTS as an int64_t; libavcodec won't use it.
union pts { int64_t i; double d; };