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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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_