summaryrefslogtreecommitdiffstats
path: root/audio/decode/dec_audio.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-11-23 21:22:17 +0100
committerwm4 <wm4@nowhere>2013-11-23 21:22:17 +0100
commit0f5ec05d8f4ae02262dc79a895bce3b465b376f2 (patch)
treeba5fc3f640eeefa44a28695f8cd3f63ba2eec2c9 /audio/decode/dec_audio.h
parent705a7310e6c823a72c961720f8ae416962f1398a (diff)
downloadmpv-0f5ec05d8f4ae02262dc79a895bce3b465b376f2.tar.bz2
mpv-0f5ec05d8f4ae02262dc79a895bce3b465b376f2.tar.xz
audio: move decoder context from sh_audio into new struct
Move all state that basically changes during decoding or is needed in order to manage decoding itself into a new struct (dec_audio). sh_audio (defined in stheader.h) is supposed to be the audio stream header. This should reflect the file headers for the stream. Putting the decoder context there is strange design, to say the least.
Diffstat (limited to 'audio/decode/dec_audio.h')
-rw-r--r--audio/decode/dec_audio.h30
1 files changed, 24 insertions, 6 deletions
diff --git a/audio/decode/dec_audio.h b/audio/decode/dec_audio.h
index 3ec5954471..bc5c3793d8 100644
--- a/audio/decode/dec_audio.h
+++ b/audio/decode/dec_audio.h
@@ -25,14 +25,32 @@
struct mp_audio_buffer;
struct mp_decoder_list;
-struct mp_decoder_list *mp_audio_decoder_list(void);
-int init_best_audio_codec(sh_audio_t *sh_audio, char *audio_decoders);
-int decode_audio(sh_audio_t *sh_audio, struct mp_audio_buffer *outbuf,
+struct dec_audio {
+ struct MPOpts *opts;
+ const struct ad_functions *ad_driver;
+ struct sh_stream *header;
+ struct mp_audio_buffer *decode_buffer;
+ struct af_stream *afilter;
+ int initialized;
+ char *decoder_desc;
+ // set by decoder
+ int i_bps; // input bitrate
+ // last known pts value in output from decoder
+ double pts;
+ // number of samples output by decoder after last known pts
+ int pts_offset;
+ // For free use by the decoder
+ void *priv;
+};
+
+struct mp_decoder_list *audio_decoder_list(void);
+int audio_init_best_codec(struct dec_audio *d_audio, char *audio_decoders);
+int audio_decode(struct dec_audio *d_audio, struct mp_audio_buffer *outbuf,
int minsamples);
-void resync_audio_stream(sh_audio_t *sh_audio);
-void uninit_audio(sh_audio_t *sh_audio);
+void audio_resync_stream(struct dec_audio *d_audio);
+void audio_uninit(struct dec_audio *d_audio);
-int init_audio_filters(sh_audio_t *sh_audio, int in_samplerate,
+int audio_init_filters(struct dec_audio *d_audio, int in_samplerate,
int *out_samplerate, struct mp_chmap *out_channels,
int *out_format);