Browse Source

lavf/output-example: more proper usage of the new API.

Passing the codec into avformat_new_stream() is preferred.
tags/n0.11
Anton Khirnov 13 years ago
parent
commit
6e9ed7c7ae
1 changed files with 20 additions and 24 deletions
  1. +20
    -24
      libavformat/output-example.c

+ 20
- 24
libavformat/output-example.c View File

@@ -64,16 +64,22 @@ static AVStream *add_audio_stream(AVFormatContext *oc, enum CodecID codec_id)
{ {
AVCodecContext *c; AVCodecContext *c;
AVStream *st; AVStream *st;
AVCodec *codec;

/* find the audio encoder */
codec = avcodec_find_encoder(codec_id);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}


st = avformat_new_stream(oc, NULL);
st = avformat_new_stream(oc, codec);
if (!st) { if (!st) {
fprintf(stderr, "Could not alloc stream\n"); fprintf(stderr, "Could not alloc stream\n");
exit(1); exit(1);
} }


c = st->codec; c = st->codec;
c->codec_id = codec_id;
c->codec_type = AVMEDIA_TYPE_AUDIO;


/* put sample parameters */ /* put sample parameters */
c->sample_fmt = AV_SAMPLE_FMT_S16; c->sample_fmt = AV_SAMPLE_FMT_S16;
@@ -91,19 +97,11 @@ static AVStream *add_audio_stream(AVFormatContext *oc, enum CodecID codec_id)
static void open_audio(AVFormatContext *oc, AVStream *st) static void open_audio(AVFormatContext *oc, AVStream *st)
{ {
AVCodecContext *c; AVCodecContext *c;
AVCodec *codec;


c = st->codec; c = st->codec;


/* find the audio encoder */
codec = avcodec_find_encoder(c->codec_id);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}

/* open it */ /* open it */
if (avcodec_open2(c, codec, NULL) < 0) {
if (avcodec_open2(c, NULL, NULL) < 0) {
fprintf(stderr, "could not open codec\n"); fprintf(stderr, "could not open codec\n");
exit(1); exit(1);
} }
@@ -199,16 +197,22 @@ static AVStream *add_video_stream(AVFormatContext *oc, enum CodecID codec_id)
{ {
AVCodecContext *c; AVCodecContext *c;
AVStream *st; AVStream *st;
AVCodec *codec;

/* find the video encoder */
codec = avcodec_find_encoder(codec_id);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}


st = avformat_new_stream(oc, NULL);
st = avformat_new_stream(oc, codec);
if (!st) { if (!st) {
fprintf(stderr, "Could not alloc stream\n"); fprintf(stderr, "Could not alloc stream\n");
exit(1); exit(1);
} }


c = st->codec; c = st->codec;
c->codec_id = codec_id;
c->codec_type = AVMEDIA_TYPE_VIDEO;


/* put sample parameters */ /* put sample parameters */
c->bit_rate = 400000; c->bit_rate = 400000;
@@ -262,20 +266,12 @@ static AVFrame *alloc_picture(enum PixelFormat pix_fmt, int width, int height)


static void open_video(AVFormatContext *oc, AVStream *st) static void open_video(AVFormatContext *oc, AVStream *st)
{ {
AVCodec *codec;
AVCodecContext *c; AVCodecContext *c;


c = st->codec; c = st->codec;


/* find the video encoder */
codec = avcodec_find_encoder(c->codec_id);
if (!codec) {
fprintf(stderr, "codec not found\n");
exit(1);
}

/* open the codec */ /* open the codec */
if (avcodec_open2(c, codec, NULL) < 0) {
if (avcodec_open2(c, NULL, NULL) < 0) {
fprintf(stderr, "could not open codec\n"); fprintf(stderr, "could not open codec\n");
exit(1); exit(1);
} }


Loading…
Cancel
Save