summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-09-24 23:20:19 +0200
committerwm4 <wm4@nowhere>2014-09-24 23:33:21 +0200
commite977624d8723ab8c129e8cefc5bdac31aa8a9475 (patch)
treee6982c5348387f879fece01ba153f89e846382eb /audio
parent9ac86d9e994aeb764207f4d0279b3d37266f79e6 (diff)
downloadmpv-e977624d8723ab8c129e8cefc5bdac31aa8a9475.tar.bz2
mpv-e977624d8723ab8c129e8cefc5bdac31aa8a9475.tar.xz
audio: confine demux_mkv audio PCM hack
Let codec_tags.c do the messy mapping. In theory we could simplify further by makign demux_mkv.c directly use codec names instead of the MPlayer-inherited "internal FourCC" business, but I'd rather not touch this - it would just break things.
Diffstat (limited to 'audio')
-rw-r--r--audio/decode/ad_lavc.c50
1 files changed, 0 insertions, 50 deletions
diff --git a/audio/decode/ad_lavc.c b/audio/decode/ad_lavc.c
index 56d68bbd90..a590de92fd 100644
--- a/audio/decode/ad_lavc.c
+++ b/audio/decode/ad_lavc.c
@@ -71,50 +71,6 @@ const struct m_sub_options ad_lavc_conf = {
},
};
-struct pcm_map
-{
- int tag;
- const char *codecs[6]; // {any, 1byte, 2bytes, 3bytes, 4bytes, 8bytes}
-};
-
-// NOTE: these are needed to make rawaudio with demux_mkv work.
-static const struct pcm_map tag_map[] = {
- // Microsoft PCM
- {0x0, {NULL, "pcm_u8", "pcm_s16le", "pcm_s24le", "pcm_s32le"}},
- {0x1, {NULL, "pcm_u8", "pcm_s16le", "pcm_s24le", "pcm_s32le"}},
- // MS PCM, Extended
- {0xfffe, {NULL, "pcm_u8", "pcm_s16le", "pcm_s24le", "pcm_s32le"}},
- // IEEE float
- {0x3, {"pcm_f32le", [5] = "pcm_f64le"}},
- // 'raw '
- {0x20776172, {"pcm_s16be", [1] = "pcm_u8"}},
- // 'twos', used by demux_mkv.c internally
- {MKTAG('t', 'w', 'o', 's'),
- {NULL, "pcm_s8", "pcm_s16be", "pcm_s24be", "pcm_s32be"}},
- {-1},
-};
-
-static const char *find_pcm_decoder(const struct pcm_map *map, int format,
- int bits_per_sample)
-{
- int bytes = (bits_per_sample + 7) / 8;
- if (bytes == 8)
- bytes = 5; // 64 bit entry
- for (int n = 0; map[n].tag != -1; n++) {
- const struct pcm_map *entry = &map[n];
- if (entry->tag == format) {
- const char *dec = NULL;
- if (bytes >= 1 && bytes <= 5)
- dec = entry->codecs[bytes];
- if (!dec)
- dec = entry->codecs[0];
- if (dec)
- return dec;
- }
- }
- return NULL;
-}
-
static void set_data_from_avframe(struct dec_audio *da)
{
struct priv *priv = da->priv;
@@ -170,11 +126,6 @@ static int init(struct dec_audio *da, const char *decoder)
struct priv *ctx = talloc_zero(NULL, struct priv);
da->priv = ctx;
- if (sh_audio->wf && strcmp(decoder, "pcm") == 0) {
- decoder = find_pcm_decoder(tag_map, sh->format,
- sh_audio->wf->wBitsPerSample);
- }
-
ctx->force_channel_map = sh_audio->force_channels;
lavc_codec = avcodec_find_decoder_by_name(decoder);
@@ -336,7 +287,6 @@ static int decode_packet(struct dec_audio *da)
static void add_decoders(struct mp_decoder_list *list)
{
mp_add_lavc_decoders(list, AVMEDIA_TYPE_AUDIO);
- mp_add_decoder(list, "lavc", "pcm", "pcm", "Raw PCM");
}
const struct ad_functions ad_lavc = {