diff options
author | Diego Biurrun <diego@biurrun.de> | 2016-02-16 18:35:25 +0100 |
---|---|---|
committer | Diego Biurrun <diego@biurrun.de> | 2016-02-18 15:35:46 +0100 |
commit | 0d1229f1d2b8f26dd50c6be7917bb8ed8cb95364 (patch) | |
tree | bbcccb7658db44e040ef625410f3a640b6f8160f /libavformat/vocdec.c | |
parent | 624e235502c5aa2d17e22dd6c0ccdf080a177310 (diff) | |
download | ffmpeg-0d1229f1d2b8f26dd50c6be7917bb8ed8cb95364.tar.gz |
voc: Split ff_voc_get_packet into a separate file
Diffstat (limited to 'libavformat/vocdec.c')
-rw-r--r-- | libavformat/vocdec.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/libavformat/vocdec.c b/libavformat/vocdec.c index 459952203e..aca77ced63 100644 --- a/libavformat/vocdec.c +++ b/libavformat/vocdec.c @@ -23,105 +23,6 @@ #include "voc.h" #include "internal.h" -int -ff_voc_get_packet(AVFormatContext *s, AVPacket *pkt, AVStream *st, int max_size) -{ - VocDecContext *voc = s->priv_data; - AVCodecContext *dec = st->codec; - AVIOContext *pb = s->pb; - VocType type; - int size, tmp_codec=-1; - int sample_rate = 0; - int channels = 1; - - while (!voc->remaining_size) { - type = avio_r8(pb); - if (type == VOC_TYPE_EOF) - return AVERROR(EIO); - voc->remaining_size = avio_rl24(pb); - if (!voc->remaining_size) { - if (!s->pb->seekable) - return AVERROR(EIO); - voc->remaining_size = avio_size(pb) - avio_tell(pb); - } - max_size -= 4; - - switch (type) { - case VOC_TYPE_VOICE_DATA: - if (!dec->sample_rate) { - dec->sample_rate = 1000000 / (256 - avio_r8(pb)); - if (sample_rate) - dec->sample_rate = sample_rate; - avpriv_set_pts_info(st, 64, 1, dec->sample_rate); - dec->channels = channels; - dec->bits_per_coded_sample = av_get_bits_per_sample(dec->codec_id); - } else - avio_skip(pb, 1); - tmp_codec = avio_r8(pb); - voc->remaining_size -= 2; - max_size -= 2; - channels = 1; - break; - - case VOC_TYPE_VOICE_DATA_CONT: - break; - - case VOC_TYPE_EXTENDED: - sample_rate = avio_rl16(pb); - avio_r8(pb); - channels = avio_r8(pb) + 1; - sample_rate = 256000000 / (channels * (65536 - sample_rate)); - voc->remaining_size = 0; - max_size -= 4; - break; - - case VOC_TYPE_NEW_VOICE_DATA: - if (!dec->sample_rate) { - dec->sample_rate = avio_rl32(pb); - avpriv_set_pts_info(st, 64, 1, dec->sample_rate); - dec->bits_per_coded_sample = avio_r8(pb); - dec->channels = avio_r8(pb); - } else - avio_skip(pb, 6); - tmp_codec = avio_rl16(pb); - avio_skip(pb, 4); - voc->remaining_size -= 12; - max_size -= 12; - break; - - default: - avio_skip(pb, voc->remaining_size); - max_size -= voc->remaining_size; - voc->remaining_size = 0; - break; - } - } - - if (tmp_codec >= 0) { - tmp_codec = ff_codec_get_id(ff_voc_codec_tags, tmp_codec); - if (dec->codec_id == AV_CODEC_ID_NONE) - dec->codec_id = tmp_codec; - else if (dec->codec_id != tmp_codec) - av_log(s, AV_LOG_WARNING, "Ignoring mid-stream change in audio codec\n"); - if (dec->codec_id == AV_CODEC_ID_NONE) { - if (s->audio_codec_id == AV_CODEC_ID_NONE) { - av_log(s, AV_LOG_ERROR, "unknown codec tag\n"); - return AVERROR(EINVAL); - } - av_log(s, AV_LOG_WARNING, "unknown codec tag\n"); - } - } - - dec->bit_rate = dec->sample_rate * dec->bits_per_coded_sample; - - if (max_size <= 0) - max_size = 2048; - size = FFMIN(voc->remaining_size, max_size); - voc->remaining_size -= size; - return av_get_packet(pb, pkt, size); -} - -#if CONFIG_VOC_DEMUXER static int voc_probe(AVProbeData *p) { int version, check; @@ -176,4 +77,3 @@ AVInputFormat ff_voc_demuxer = { .read_packet = voc_read_packet, .codec_tag = (const AVCodecTag* const []){ ff_voc_codec_tags, 0 }, }; -#endif /* CONFIG_VOC_DEMUXER */ |