Mercurial > repos > blastem
annotate mediaplayer.h @ 2375:02c04196c2da
Fix mediaplayer play/pause handling
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 17 Nov 2023 00:30:46 -0800 |
parents | 97f164d1f0f6 |
children | 1c09f5be285b |
rev | line source |
---|---|
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
1 #ifndef MEDIAPLAYER_H_ |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 #define MEDIAPLAYER_H_ |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include <stdint.h> |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 #include "system.h" |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #include "vgm.h" |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
7 #include "wave.h" |
2296
789802d99629
Add basic FLAC decoder and add FLAC playback support to the media player
Michael Pavone <pavone@retrodev.com>
parents:
2290
diff
changeset
|
8 #include "flac.h" |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
9 #include "oscilloscope.h" |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
10 #include "render_audio.h" |
2375
02c04196c2da
Fix mediaplayer play/pause handling
Michael Pavone <pavone@retrodev.com>
parents:
2374
diff
changeset
|
11 #include "io.h" |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 typedef struct chip_info chip_info; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 typedef void (*chip_run_fun)(void *context, uint32_t cycle); |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
15 typedef void (*chip_scope_fun)(chip_info *chip, oscilloscope *scope); |
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
16 typedef void (*chip_noarg_fun)(void *context); |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 typedef void (*chip_adjust_fun)(chip_info *chip); |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 struct chip_info { |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 void *context; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 chip_run_fun run; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 chip_adjust_fun adjust; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
22 chip_scope_fun scope; |
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
23 chip_noarg_fun no_scope; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 data_block *blocks; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 uint32_t clock; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 uint32_t samples; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 uint8_t cmd; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 uint8_t data_type; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 }; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 typedef struct { |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 system_header header; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 system_media *media; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 vgm_header *vgm; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 vgm_extended_header *vgm_ext; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 data_block *ym_seek_block; |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
37 wave_header *wave; |
2296
789802d99629
Add basic FLAC decoder and add FLAC playback support to the media player
Michael Pavone <pavone@retrodev.com>
parents:
2290
diff
changeset
|
38 flac_file *flac; |
2290
c4980d89614b
Support WAVE files in media player
Michael Pavone <pavone@retrodev.com>
parents:
2289
diff
changeset
|
39 audio_source *audio; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 chip_info *chips; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
41 oscilloscope *scope; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 uint32_t num_chips; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 uint32_t current_offset; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 uint32_t playback_time; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 uint32_t wait_samples; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 uint32_t ym_seek_offset; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 uint32_t ym_block_offset; |
2374
97f164d1f0f6
Re-enable VGM looping. Enable oscilloscope in VGM player. Fix VGM player PSG output
Michael Pavone <pavone@retrodev.com>
parents:
2296
diff
changeset
|
48 uint32_t loop_count; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 uint8_t state; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 uint8_t media_type; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 uint8_t should_return; |
2375
02c04196c2da
Fix mediaplayer play/pause handling
Michael Pavone <pavone@retrodev.com>
parents:
2374
diff
changeset
|
52 uint8_t button_state[NUM_GAMEPAD_BUTTONS]; |
2289
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 } media_player; |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 media_player *alloc_media_player(system_media *media, uint32_t opts); |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 |
92449b47cce8
Integrate VGM player into main blastem binary
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 #endif //MEDIAPLAYER_H_ |