summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/examples/muxing.c41
-rw-r--r--libavformat/avformat.h6
-rw-r--r--libavformat/version.h3
3 files changed, 18 insertions, 32 deletions
diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c
index b5bd54a105..041617aff3 100644
--- a/doc/examples/muxing.c
+++ b/doc/examples/muxing.c
@@ -498,39 +498,20 @@ static int write_video_frame(AVFormatContext *oc, OutputStream *ost)
frame = get_video_frame(ost);
- if (oc->oformat->flags & AVFMT_RAWPICTURE) {
- /* a hack to avoid data copy with some raw video muxers */
- AVPacket pkt;
- av_init_packet(&pkt);
-
- if (!frame)
- return 1;
-
- pkt.flags |= AV_PKT_FLAG_KEY;
- pkt.stream_index = ost->st->index;
- pkt.data = (uint8_t *)frame;
- pkt.size = sizeof(AVPicture);
+ AVPacket pkt = { 0 };
+ av_init_packet(&pkt);
- pkt.pts = pkt.dts = frame->pts;
- av_packet_rescale_ts(&pkt, c->time_base, ost->st->time_base);
+ /* encode the image */
+ ret = avcodec_encode_video2(c, &pkt, frame, &got_packet);
+ if (ret < 0) {
+ fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
+ exit(1);
+ }
- ret = av_interleaved_write_frame(oc, &pkt);
+ if (got_packet) {
+ ret = write_frame(oc, &c->time_base, ost->st, &pkt);
} else {
- AVPacket pkt = { 0 };
- av_init_packet(&pkt);
-
- /* encode the image */
- ret = avcodec_encode_video2(c, &pkt, frame, &got_packet);
- if (ret < 0) {
- fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
- exit(1);
- }
-
- if (got_packet) {
- ret = write_frame(oc, &c->time_base, ost->st, &pkt);
- } else {
- ret = 0;
- }
+ ret = 0;
}
if (ret < 0) {
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index e2a27d437b..f3ffcfbe38 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -465,8 +465,10 @@ typedef struct AVProbeData {
#define AVFMT_NOFILE 0x0001
#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */
#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */
+#if FF_API_LAVF_FMT_RAWPICTURE
#define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for
- raw picture data. */
+ raw picture data. @deprecated Not used anymore */
+#endif
#define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */
#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */
#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */
@@ -511,7 +513,7 @@ typedef struct AVOutputFormat {
enum AVCodecID video_codec; /**< default video codec */
enum AVCodecID subtitle_codec; /**< default subtitle codec */
/**
- * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE,
+ * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER,
* AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
* AVFMT_TS_NONSTRICT
diff --git a/libavformat/version.h b/libavformat/version.h
index f7a2e09852..7e706637a9 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -65,6 +65,9 @@
#ifndef FF_API_URL_FEOF
#define FF_API_URL_FEOF (LIBAVFORMAT_VERSION_MAJOR < 58)
#endif
+#ifndef FF_API_LAVF_FMT_RAWPICTURE
+#define FF_API_LAVF_FMT_RAWPICTURE (LIBAVFORMAT_VERSION_MAJOR < 58)
+#endif
#ifndef FF_API_R_FRAME_RATE
#define FF_API_R_FRAME_RATE 1