X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Foggparsecelt.c;h=291a6b5aaba173e1aadf89dfa1001de00b75f117;hb=11de006babf735aafa3462d43dd2c02bb6ac6e2f;hp=82a842c612c20500e3eaf0cd7007014cf27b3b8a;hpb=4ca59d19485afce923c6f1d8ccef980011b76f50;p=ffmpeg diff --git a/libavformat/oggparsecelt.c b/libavformat/oggparsecelt.c index 82a842c612c..291a6b5aaba 100644 --- a/libavformat/oggparsecelt.c +++ b/libavformat/oggparsecelt.c @@ -23,6 +23,7 @@ #include "libavutil/intreadwrite.h" #include "avformat.h" +#include "internal.h" #include "oggdec.h" struct oggcelt_private { @@ -41,12 +42,12 @@ static int celt_header(AVFormatContext *s, int idx) !memcmp(p, ff_celt_codec.magic, ff_celt_codec.magicsize)) { /* Main header */ - uint32_t version, sample_rate, nb_channels, frame_size; + uint32_t version, sample_rate, nb_channels; uint32_t overlap, extra_headers; uint8_t *extradata; extradata = av_malloc(2 * sizeof(uint32_t) + - FF_INPUT_BUFFER_PADDING_SIZE); + AV_INPUT_BUFFER_PADDING_SIZE); priv = av_malloc(sizeof(struct oggcelt_private)); if (!extradata || !priv) { av_free(extradata); @@ -57,22 +58,19 @@ static int celt_header(AVFormatContext *s, int idx) /* unused header size field skipped */ sample_rate = AV_RL32(p + 36); nb_channels = AV_RL32(p + 40); - frame_size = AV_RL32(p + 44); overlap = AV_RL32(p + 48); /* unused bytes per packet field skipped */ extra_headers = AV_RL32(p + 56); av_free(os->private); - av_free(st->codec->extradata); - st->codec->codec_type = AVMEDIA_TYPE_AUDIO; - st->codec->codec_id = CODEC_ID_CELT; - st->codec->sample_rate = sample_rate; - st->codec->channels = nb_channels; - st->codec->frame_size = frame_size; - st->codec->sample_fmt = AV_SAMPLE_FMT_S16; - st->codec->extradata = extradata; - st->codec->extradata_size = 2 * sizeof(uint32_t); + av_free(st->codecpar->extradata); + st->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; + st->codecpar->codec_id = AV_CODEC_ID_CELT; + st->codecpar->sample_rate = sample_rate; + st->codecpar->channels = nb_channels; + st->codecpar->extradata = extradata; + st->codecpar->extradata_size = 2 * sizeof(uint32_t); if (sample_rate) - av_set_pts_info(st, 64, 1, sample_rate); + avpriv_set_pts_info(st, 64, 1, sample_rate); priv->extra_headers_left = 1 + extra_headers; os->private = priv; AV_WL32(extradata + 0, overlap); @@ -81,7 +79,7 @@ static int celt_header(AVFormatContext *s, int idx) } else if (priv && priv->extra_headers_left) { /* Extra headers (vorbiscomment) */ - ff_vorbis_comment(s, &st->metadata, p, os->psize); + ff_vorbis_stream_comment(s, st, p, os->psize); priv->extra_headers_left--; return 1; } else { @@ -93,4 +91,5 @@ const struct ogg_codec ff_celt_codec = { .magic = "CELT ", .magicsize = 8, .header = celt_header, + .nb_header = 2, };