On 10/23/2011 05:28 AM, Anton Khirnov wrote:
> It's only used in avconv, so it properly belongs to OutputStream struct
> there.
> ---
> avconv.c | 25 ++++++++++++-------------
> libavformat/avformat.h | 4 +++-
> libavformat/version.h | 3 +++
> 3 files changed, 18 insertions(+), 14 deletions(-)
>
> diff --git a/avconv.c b/avconv.c
> index ea33659..96f6059 100644
> --- a/avconv.c
> +++ b/avconv.c
> @@ -227,6 +227,7 @@ typedef struct OutputStream {
> int64_t sws_flags;
> AVDictionary *opts;
> int is_past_recording_time;
> + int stream_copy;
> } OutputStream;
>
>
> @@ -1346,7 +1347,7 @@ static void print_report(OutputFile *output_files,
> float q = -1;
> ost = &ost_table[i];
> enc = ost->st->codec;
> - if (!ost->st->stream_copy && enc->coded_frame)
> + if (!ost->stream_copy && enc->coded_frame)
> q = enc->coded_frame->quality/(float)FF_QP2LAMBDA;
> if (vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
> snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), "q=%2.1f
> ", q);
> @@ -1987,7 +1988,7 @@ static int transcode_init(OutputFile *output_files,
> codec->bits_per_raw_sample= icodec->bits_per_raw_sample;
> codec->chroma_sample_location = icodec->chroma_sample_location;
>
> - if (ost->st->stream_copy) {
> + if (ost->stream_copy) {
> uint64_t extra_size = (uint64_t)icodec->extradata_size +
> FF_INPUT_BUFFER_PADDING_SIZE;
>
> if (extra_size > INT_MAX) {
> @@ -2297,7 +2298,7 @@ static int transcode_init(OutputFile *output_files,
> av_log(NULL, AV_LOG_INFO, " [sync #%d.%d]",
> ost->sync_ist->file_index,
> ost->sync_ist->st->index);
> - if (ost->st->stream_copy)
> + if (ost->stream_copy)
> av_log(NULL, AV_LOG_INFO, " (copy)");
> else
> av_log(NULL, AV_LOG_INFO, " (%s -> %s)",
> input_streams[ost->source_index].dec ?
> @@ -2525,7 +2526,7 @@ static int transcode(OutputFile *output_files,
> for (i = 0; i < nb_output_streams; i++) {
> ost = &output_streams[i];
> if (ost) {
> - if (ost->st->stream_copy)
> + if (ost->stream_copy)
> av_freep(&ost->st->codec->extradata);
> if (ost->logfile) {
> fclose(ost->logfile);
> @@ -3009,7 +3010,7 @@ static void choose_encoder(OptionsContext *o,
> AVFormatContext *s, OutputStream *
> NULL,
> ost->st->codec->codec_type);
> ost->enc = avcodec_find_encoder(ost->st->codec->codec_id);
> } else if (!strcmp(codec_name, "copy"))
> - ost->st->stream_copy = 1;
> + ost->stream_copy = 1;
> else {
> ost->enc = find_codec_or_die(codec_name, ost->st->codec->codec_type,
> 1);
> ost->st->codec->codec_id = ost->enc->id;
> @@ -3144,7 +3145,7 @@ static OutputStream *new_video_stream(OptionsContext
> *o, AVFormatContext *oc)
> st = ost->st;
> video_enc = st->codec;
>
> - if (!st->stream_copy) {
> + if (!ost->stream_copy) {
> const char *p = NULL;
> char *forced_key_frames = NULL, *frame_rate = NULL, *frame_size =
> NULL;
> char *frame_aspect_ratio = NULL, *frame_pix_fmt = NULL;
> @@ -3261,7 +3262,7 @@ static OutputStream *new_audio_stream(OptionsContext
> *o, AVFormatContext *oc)
> audio_enc = st->codec;
> audio_enc->codec_type = AVMEDIA_TYPE_AUDIO;
>
> - if (!st->stream_copy) {
> + if (!ost->stream_copy) {
> char *sample_fmt = NULL;
>
> MATCH_PER_STREAM_OPT(audio_channels, i, audio_enc->channels, oc, st);
> @@ -3281,12 +3282,10 @@ static OutputStream *new_audio_stream(OptionsContext
> *o, AVFormatContext *oc)
>
> static OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc)
> {
> - AVStream *st;
> OutputStream *ost;
>
> ost = new_output_stream(o, oc, AVMEDIA_TYPE_DATA);
> - st = ost->st;
> - if (!st->stream_copy) {
> + if (!ost->stream_copy) {
> av_log(NULL, AV_LOG_FATAL, "Data stream encoding not supported yet
> (only streamcopy)\n");
> exit_program(1);
> }
> @@ -3297,7 +3296,7 @@ static OutputStream *new_data_stream(OptionsContext *o,
> AVFormatContext *oc)
> static OutputStream *new_attachment_stream(OptionsContext *o,
> AVFormatContext *oc)
> {
> OutputStream *ost = new_output_stream(o, oc, AVMEDIA_TYPE_ATTACHMENT);
> - ost->st->stream_copy = 1;
> + ost->stream_copy = 1;
> return ost;
> }
>
> @@ -3401,9 +3400,9 @@ static int read_avserver_streams(OptionsContext *o,
> AVFormatContext *s, const ch
> st->info = NULL;
> avcodec_copy_context(st->codec, ic->streams[i]->codec);
>
> - if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && !st->stream_copy)
> + if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO && !ost->stream_copy)
> choose_sample_fmt(st, codec);
> - else if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
> !st->stream_copy)
> + else if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO &&
> !ost->stream_copy)
> choose_pixel_fmt(st, codec);
> }
>
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index f026e0b..d16be90 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -534,8 +534,10 @@ typedef struct AVStream {
> #if FF_API_REORDER_PRIVATE
> int pts_wrap_bits; /**< number of bits in pts (used for wrapping
> control) */
> #endif
> +#if FF_API_STREAM_COPY
> /* ffmpeg.c private use */
> - int stream_copy; /**< If set, just copy stream. */
> + attribute_deprecated int stream_copy; /**< If set, just copy stream. */
> +#endif
> enum AVDiscard discard; ///< Selects which packets can be discarded at
> will and do not need to be demuxed.
>
> #if FF_API_AVSTREAM_QUALITY
> diff --git a/libavformat/version.h b/libavformat/version.h
> index f2558f8..3836fbc 100644
> --- a/libavformat/version.h
> +++ b/libavformat/version.h
> @@ -107,5 +107,8 @@
> #ifndef FF_API_REORDER_PRIVATE
> #define FF_API_REORDER_PRIVATE (LIBAVFORMAT_VERSION_MAJOR < 54)
> #endif
> +#ifndef FF_API_STREAM_COPY
> +#define FF_API_STREAM_COPY (LIBAVFORMAT_VERSION_MAJOR < 54)
> +#endif
>
> #endif /* AVFORMAT_VERSION_H */
great! patch looks good.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel