You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-10 06:10:52 +02:00
avformat: Do not use AVFMT_RAWPICTURE
There are no formats supporting it anymore and it is deprecated. Update the documentation accordingly.
This commit is contained in:
26
avconv.c
26
avconv.c
@@ -452,7 +452,7 @@ static void do_video_out(AVFormatContext *s,
|
|||||||
AVFrame *in_picture,
|
AVFrame *in_picture,
|
||||||
int *frame_size)
|
int *frame_size)
|
||||||
{
|
{
|
||||||
int ret, format_video_sync;
|
int ret, format_video_sync, got_packet;
|
||||||
AVPacket pkt;
|
AVPacket pkt;
|
||||||
AVCodecContext *enc = ost->enc_ctx;
|
AVCodecContext *enc = ost->enc_ctx;
|
||||||
|
|
||||||
@@ -488,26 +488,6 @@ static void do_video_out(AVFormatContext *s,
|
|||||||
if (ost->frame_number >= ost->max_frames)
|
if (ost->frame_number >= ost->max_frames)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (s->oformat->flags & AVFMT_RAWPICTURE &&
|
|
||||||
enc->codec->id == AV_CODEC_ID_RAWVIDEO) {
|
|
||||||
/* raw pictures are written as AVPicture structure to
|
|
||||||
avoid any copies. We support temporarily the older
|
|
||||||
method. */
|
|
||||||
#if FF_API_CODED_FRAME
|
|
||||||
FF_DISABLE_DEPRECATION_WARNINGS
|
|
||||||
enc->coded_frame->interlaced_frame = in_picture->interlaced_frame;
|
|
||||||
enc->coded_frame->top_field_first = in_picture->top_field_first;
|
|
||||||
FF_ENABLE_DEPRECATION_WARNINGS
|
|
||||||
#endif
|
|
||||||
pkt.data = (uint8_t *)in_picture;
|
|
||||||
pkt.size = sizeof(AVPicture);
|
|
||||||
pkt.pts = av_rescale_q(in_picture->pts, enc->time_base, ost->st->time_base);
|
|
||||||
pkt.flags |= AV_PKT_FLAG_KEY;
|
|
||||||
|
|
||||||
write_frame(s, &pkt, ost);
|
|
||||||
} else {
|
|
||||||
int got_packet;
|
|
||||||
|
|
||||||
if (enc->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
|
if (enc->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
|
||||||
ost->top_field_first >= 0)
|
ost->top_field_first >= 0)
|
||||||
in_picture->top_field_first = !!ost->top_field_first;
|
in_picture->top_field_first = !!ost->top_field_first;
|
||||||
@@ -538,7 +518,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||||||
fprintf(ost->logfile, "%s", enc->stats_out);
|
fprintf(ost->logfile, "%s", enc->stats_out);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
ost->sync_opts++;
|
ost->sync_opts++;
|
||||||
/*
|
/*
|
||||||
* For video, number of frames in == number of packets out.
|
* For video, number of frames in == number of packets out.
|
||||||
@@ -959,8 +939,6 @@ static void flush_encoders(void)
|
|||||||
|
|
||||||
if (enc->codec_type == AVMEDIA_TYPE_AUDIO && enc->frame_size <= 1)
|
if (enc->codec_type == AVMEDIA_TYPE_AUDIO && enc->frame_size <= 1)
|
||||||
continue;
|
continue;
|
||||||
if (enc->codec_type == AVMEDIA_TYPE_VIDEO && (os->oformat->flags & AVFMT_RAWPICTURE) && enc->codec->id == AV_CODEC_ID_RAWVIDEO)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int (*encode)(AVCodecContext*, AVPacket*, const AVFrame*, int*) = NULL;
|
int (*encode)(AVCodecContext*, AVPacket*, const AVFrame*, int*) = NULL;
|
||||||
|
@@ -491,31 +491,13 @@ static int write_video_frame(AVFormatContext *oc, OutputStream *ost)
|
|||||||
int ret;
|
int ret;
|
||||||
AVCodecContext *c;
|
AVCodecContext *c;
|
||||||
AVFrame *frame;
|
AVFrame *frame;
|
||||||
|
AVPacket pkt = { 0 };
|
||||||
int got_packet = 0;
|
int got_packet = 0;
|
||||||
|
|
||||||
c = ost->st->codec;
|
c = ost->st->codec;
|
||||||
|
|
||||||
frame = get_video_frame(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);
|
|
||||||
|
|
||||||
pkt.pts = pkt.dts = frame->pts;
|
|
||||||
av_packet_rescale_ts(&pkt, c->time_base, ost->st->time_base);
|
|
||||||
|
|
||||||
ret = av_interleaved_write_frame(oc, &pkt);
|
|
||||||
} else {
|
|
||||||
AVPacket pkt = { 0 };
|
|
||||||
av_init_packet(&pkt);
|
av_init_packet(&pkt);
|
||||||
|
|
||||||
/* encode the image */
|
/* encode the image */
|
||||||
@@ -532,7 +514,7 @@ static int write_video_frame(AVFormatContext *oc, OutputStream *ost)
|
|||||||
/* Write the compressed frame to the media file. */
|
/* Write the compressed frame to the media file. */
|
||||||
ret = av_interleaved_write_frame(oc, &pkt);
|
ret = av_interleaved_write_frame(oc, &pkt);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
fprintf(stderr, "Error while writing video frame\n");
|
fprintf(stderr, "Error while writing video frame\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@@ -413,8 +413,10 @@ typedef struct AVProbeData {
|
|||||||
#define AVFMT_NOFILE 0x0001
|
#define AVFMT_NOFILE 0x0001
|
||||||
#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */
|
#define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */
|
||||||
#define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */
|
#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
|
#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_GLOBALHEADER 0x0040 /**< Format wants global header. */
|
||||||
#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */
|
#define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestamps. */
|
||||||
#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */
|
#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */
|
||||||
@@ -454,7 +456,7 @@ typedef struct AVOutputFormat {
|
|||||||
enum AVCodecID video_codec; /**< default video codec */
|
enum AVCodecID video_codec; /**< default video codec */
|
||||||
enum AVCodecID subtitle_codec; /**< default subtitle 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_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
|
||||||
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
|
* AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
|
||||||
* AVFMT_TS_NONSTRICT
|
* AVFMT_TS_NONSTRICT
|
||||||
|
@@ -57,5 +57,8 @@
|
|||||||
#ifndef FF_API_LAVF_CODEC_TB
|
#ifndef FF_API_LAVF_CODEC_TB
|
||||||
#define FF_API_LAVF_CODEC_TB (LIBAVFORMAT_VERSION_MAJOR < 58)
|
#define FF_API_LAVF_CODEC_TB (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_FMT_RAWPICTURE
|
||||||
|
#define FF_API_LAVF_FMT_RAWPICTURE (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* AVFORMAT_VERSION_H */
|
#endif /* AVFORMAT_VERSION_H */
|
||||||
|
Reference in New Issue
Block a user