]> git.sesse.net Git - vlc/blob - modules/codec/mad/decoder.h
825d7397637e527dc5d8f53b14c8324660af3ceb
[vlc] / modules / codec / mad / decoder.h
1 /***************************************************************************
2              mad_adec.h  -  description
3                 -------------------
4     begin                : Mon Nov 5 2001
5     copyright            : (C) 2001 by Jean-Paul Saman
6     email                : jpsaman@wxs.nl
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17
18 #ifndef _VLC_MAD_ADEC_H_
19 #define _VLC_MAD_ADEC_H_
20
21 /*****************************************************************************
22  * mad_adec_thread_t : mad decoder thread descriptor
23  *****************************************************************************/
24
25 enum mad_scaling { FAST_SCALING, MPG321_SCALING };
26
27 typedef struct mad_adec_thread_s
28 {
29     /*
30      * Decoder properties
31      */
32     struct mad_decoder  libmad_decoder;
33     mad_timer_t         libmad_timer;  
34     byte_t              buffer[MAD_BUFFER_MDLEN];
35    
36     /*
37      * Thread properties
38      */
39     vlc_thread_t        thread_id;                /* id for thread functions */
40
41     /* The bit stream structure handles the PES stream at the bit level */
42     bit_stream_t        bit_stream;
43
44     /*
45      * Input properties
46      */
47     decoder_fifo_t *    p_fifo;                /* stores the PES stream data */
48     data_packet_t *     p_data;
49
50     /* Store i_pts for syncing audio frames */
51     mtime_t             i_current_pts, i_next_pts;
52
53     /*
54      * Output properties
55      */
56     aout_instance_t *   p_aout; /* opaque */
57     aout_input_t *      p_aout_input; /* opaque */
58     audio_sample_format_t output_format;
59     audio_date_t        end_date;
60
61     enum mad_scaling    audio_scaling;
62
63 } mad_adec_thread_t;
64
65 /*****************************************************************************
66  * Prototypes
67  *****************************************************************************/
68 vlc_thread_t            mad_adec_CreateThread( decoder_fifo_t * p_fifo );
69
70 #endif