3 * (c) Fredrik Wikstrom (fredrik@a500.org)
8 DEC_SETUPPROTO(SetupMPEG
) {
12 /* DEC_CLEANUPPROTO(CleanupMPEG) {
15 DECODERPROTO_v2(DecodeMPEG
) {
16 struct ClassBase
* libBase
= data
->libBase
;
17 struct MPEGA_STREAM
*mpas
;
18 struct Hook bshook
= {0};
21 NULL
, // bitstream access hook
22 // layers 1 & 2 settings (mono, stereo)
23 { FALSE
, { 2, 0, 44100 }, { 2, 0, 44100 } },
24 // layer 3 settings (mono, stereo)
25 { FALSE
, { 2, 0, 44100 }, { 2, 0, 44100 } },
26 1, // check for validity at start
27 0 // size of bitstream buffer (0 -> default)
30 bshook
.h_Entry
= (HOOKFUNC
)bshook_func
;
31 bshook
.h_SubEntry
= (HOOKFUNC
)data
;
32 bshook
.h_Data
= (APTR
)file
;
33 mpactrl
.bs_access
= &bshook
;
35 if (mpas
= IMPEGA
->MPEGA_open(NULL
, &mpactrl
)) {
39 pcm
[0] = AllocVec(MPEGA_PCM_SIZE
, MEMF_CLEAR
);
40 pcm
[1] = AllocVec(MPEGA_PCM_SIZE
, MEMF_CLEAR
);
42 if (pcm
[0] && pcm
[1]) {
44 while ((pcm_count
= IMPEGA
->MPEGA_decode_frame(mpas
, pcm
)) >= 0) {