Mercurial > mplayer.hg
annotate libmpcodecs/ad.c @ 36353:46bc86e725af
Add hack/workaround for FFmpeg offering pixfmts not valid
for the selected codec.
Fixes crashes with -vc ffmpeg12vdpau.
author | reimar |
---|---|
date | Mon, 16 Sep 2013 18:35:46 +0000 |
parents | b924f0df5a1d |
children |
rev | line source |
---|---|
30421
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
1 /* |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
2 * audio decoder interface |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
3 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
4 * This file is part of MPlayer. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
5 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
6 * MPlayer is free software; you can redistribute it and/or modify |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
9 * (at your option) any later version. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
10 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
11 * MPlayer is distributed in the hope that it will be useful, |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
14 * GNU General Public License for more details. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
15 * |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
bbb6ebec87a0
Add missing license headers to all files in the libmpcodecs directory.
diego
parents:
30244
diff
changeset
|
19 */ |
5344 | 20 |
21 #include <stdio.h> | |
22 #include <stdlib.h> | |
23 #include <string.h> | |
24 | |
25 #include "config.h" | |
26 | |
22599
4faee1254928
Add explicit location for headers from the stream/ directory.
diego
parents:
18765
diff
changeset
|
27 #include "stream/stream.h" |
22601
ed8f90096c65
Add explicit location for headers from the libmpdemux/ directory.
diego
parents:
22599
diff
changeset
|
28 #include "libmpdemux/demuxer.h" |
ed8f90096c65
Add explicit location for headers from the libmpdemux/ directory.
diego
parents:
22599
diff
changeset
|
29 #include "libmpdemux/stheader.h" |
5344 | 30 #include "ad.h" |
31 | |
31220
002cdc635c03
Use the -a52drc option also for the libavcodec decoder.
reimar
parents:
30634
diff
changeset
|
32 float drc_level = 1.0; |
002cdc635c03
Use the -a52drc option also for the libavcodec decoder.
reimar
parents:
30634
diff
changeset
|
33 |
5344 | 34 /* Missed vorbis, mad, dshow */ |
35 | |
31524 | 36 extern const ad_functions_t mpcodecs_ad_mpg123; |
30634
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
37 extern const ad_functions_t mpcodecs_ad_mp3lib; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
38 extern const ad_functions_t mpcodecs_ad_ffmpeg; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
39 extern const ad_functions_t mpcodecs_ad_liba52; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
40 extern const ad_functions_t mpcodecs_ad_hwac3; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
41 extern const ad_functions_t mpcodecs_ad_hwmpa; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
42 extern const ad_functions_t mpcodecs_ad_pcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
43 extern const ad_functions_t mpcodecs_ad_dvdpcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
44 extern const ad_functions_t mpcodecs_ad_alaw; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
45 extern const ad_functions_t mpcodecs_ad_imaadpcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
46 extern const ad_functions_t mpcodecs_ad_msadpcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
47 extern const ad_functions_t mpcodecs_ad_dk3adpcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
48 extern const ad_functions_t mpcodecs_ad_dk4adpcm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
49 extern const ad_functions_t mpcodecs_ad_dshow; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
50 extern const ad_functions_t mpcodecs_ad_dmo; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
51 extern const ad_functions_t mpcodecs_ad_acm; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
52 extern const ad_functions_t mpcodecs_ad_faad; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
53 extern const ad_functions_t mpcodecs_ad_libvorbis; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
54 extern const ad_functions_t mpcodecs_ad_speex; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
55 extern const ad_functions_t mpcodecs_ad_libmad; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
56 extern const ad_functions_t mpcodecs_ad_realaud; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
57 extern const ad_functions_t mpcodecs_ad_libdv; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
58 extern const ad_functions_t mpcodecs_ad_qtaudio; |
34103 | 59 extern const ad_functions_t mpcodecs_ad_spdif; |
30634
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
60 extern const ad_functions_t mpcodecs_ad_twin; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
61 extern const ad_functions_t mpcodecs_ad_libmusepack; |
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
62 extern const ad_functions_t mpcodecs_ad_libdca; |
5344 | 63 |
30634
9c043456a260
Mark ad_functions_t structures and mpcodecs_ad_drivers array as const.
diego
parents:
30421
diff
changeset
|
64 const ad_functions_t * const mpcodecs_ad_drivers[] = |
5344 | 65 { |
31524 | 66 #ifdef CONFIG_MPG123 |
67 &mpcodecs_ad_mpg123, | |
68 #endif | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
69 #ifdef CONFIG_LIBA52 |
5344 | 70 &mpcodecs_ad_liba52, |
30244
5ba6784f6574
More changes needed to make ad_hwac3 truly independent from liba52.
reimar
parents:
28924
diff
changeset
|
71 #endif |
5344 | 72 &mpcodecs_ad_hwac3, |
17397
2e20dd653147
ad_hwmpa: pass-through fake audio codec for hardware mpeg decoders
nicodvb
parents:
17151
diff
changeset
|
73 &mpcodecs_ad_hwmpa, |
32142
4614728cab25
build system: Merge all FFmpeg library checks into a single FFmpeg check.
diego
parents:
31974
diff
changeset
|
74 #ifdef CONFIG_FFMPEG |
5344 | 75 &mpcodecs_ad_ffmpeg, |
34103 | 76 &mpcodecs_ad_spdif, |
5344 | 77 #endif |
78 &mpcodecs_ad_pcm, | |
79 &mpcodecs_ad_dvdpcm, | |
80 &mpcodecs_ad_alaw, | |
81 &mpcodecs_ad_imaadpcm, | |
82 &mpcodecs_ad_msadpcm, | |
83 &mpcodecs_ad_dk3adpcm, | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
84 #ifdef CONFIG_WIN32DLL |
5344 | 85 &mpcodecs_ad_dshow, |
8326 | 86 &mpcodecs_ad_dmo, |
5344 | 87 &mpcodecs_ad_acm, |
14276 | 88 &mpcodecs_ad_twin, |
8160 | 89 #endif |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
90 #ifdef CONFIG_QTX_CODECS |
8008 | 91 &mpcodecs_ad_qtaudio, |
5344 | 92 #endif |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
93 #ifdef CONFIG_FAAD |
5454 | 94 &mpcodecs_ad_faad, |
95 #endif | |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
96 #ifdef CONFIG_OGGVORBIS |
7174 | 97 &mpcodecs_ad_libvorbis, |
5356
739cad21c32c
Port dec_audio.c faad aac decoder to libmpcodecs, cleaned up code, improved buffering scheme.
atmos4
parents:
5345
diff
changeset
|
98 #endif |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
99 #ifdef CONFIG_SPEEX |
16915
6b1d1e4adaea
Speex support. Seeking and pts generation does not work.
reimar
parents:
15958
diff
changeset
|
100 &mpcodecs_ad_speex, |
6b1d1e4adaea
Speex support. Seeking and pts generation does not work.
reimar
parents:
15958
diff
changeset
|
101 #endif |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
102 #ifdef CONFIG_LIBMAD |
5479
22b289d7f87f
libmad support, rewritten from scratch using Xine decoder as sample
arpi
parents:
5454
diff
changeset
|
103 &mpcodecs_ad_libmad, |
22b289d7f87f
libmad support, rewritten from scratch using Xine decoder as sample
arpi
parents:
5454
diff
changeset
|
104 #endif |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
105 #ifdef CONFIG_REALCODECS |
7174 | 106 &mpcodecs_ad_realaud, |
6367 | 107 #endif |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
108 #ifdef CONFIG_LIBDV095 |
6927 | 109 &mpcodecs_ad_libdv, |
110 #endif | |
27363
40057010b1fa
Change a bunch of codec-specific preprocessor directives from a HAVE_
diego
parents:
27341
diff
changeset
|
111 #ifdef CONFIG_MUSEPACK |
15958
087142ef3a2d
musepack demuxing and decoding support (demuxing is v7 bitstream only).
reimar
parents:
14276
diff
changeset
|
112 &mpcodecs_ad_libmusepack, |
087142ef3a2d
musepack demuxing and decoding support (demuxing is v7 bitstream only).
reimar
parents:
14276
diff
changeset
|
113 #endif |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26206
diff
changeset
|
114 #ifdef CONFIG_LIBDCA |
23821 | 115 &mpcodecs_ad_libdca, |
116 #endif | |
5344 | 117 NULL |
118 }; |