ASAPCabinetFE
 
Loading...
Searching...
No Matches
audio_decoder.h
Go to the documentation of this file.
1#ifndef AUDIO_DECODER_H
2#define AUDIO_DECODER_H
3
4#include <SDL2/SDL_audio.h>
5#include <string>
6
7// Forward declarations for FFmpeg structs
8struct AVFormatContext;
9struct AVCodecContext;
10struct AVFrame;
11struct AVPacket;
12struct SwrContext;
13struct AVAudioFifo;
14
15class FFmpegPlayer; // Forward declaration
16
35public:
44
51
60 bool setup(AVFormatContext* formatContext);
61
67 void play();
68
74 void stop();
75
81 void update();
82
90 bool decodeAudioFrame();
91
100 void fillAudioStream(Uint8* stream, int len);
101
111 static void SDLAudioCallback(void* userdata, Uint8* stream, int len);
112
120 void setVolume(float volume);
121
127 void setMute(bool mute);
128
134 void flush();
135
136private:
137 friend class FFmpegPlayer; // Allow FFmpegPlayer to access private members
138 FFmpegPlayer* player_;
139 AVCodecContext* audioCodecContext_;
140 AVFrame* audioFrame_;
141 AVPacket* audioPacket_;
142 SwrContext* swrContext_;
143 AVAudioFifo* audioFifo_;
144 int audioStreamIndex_;
145 SDL_AudioDeviceID audioDevice_;
146 SDL_AudioSpec audioSpec_;
147 float currentVolume_;
148 bool isMuted_;
149
155 void cleanup();
156};
157
158#endif // AUDIO_DECODER_H
Decodes and plays audio streams using FFmpeg and SDL.
Definition audio_decoder.h:34
void fillAudioStream(Uint8 *stream, int len)
Fills the SDL audio stream buffer with decoded audio.
Definition audio_decoder.cpp:240
bool decodeAudioFrame()
Decodes the next audio frame.
Definition audio_decoder.cpp:166
void setMute(bool mute)
Toggles the mute state.
Definition audio_decoder.cpp:291
~AudioDecoder()
Destroys the AudioDecoder instance and cleans up resources.
Definition audio_decoder.cpp:25
bool setup(AVFormatContext *formatContext)
Sets up the audio decoder with a format context.
Definition audio_decoder.cpp:29
void stop()
Stops audio playback.
Definition audio_decoder.cpp:140
void flush()
Flushes the decoder buffers.
Definition audio_decoder.cpp:296
void setVolume(float volume)
Sets the audio volume.
Definition audio_decoder.cpp:279
static void SDLAudioCallback(void *userdata, Uint8 *stream, int len)
SDL audio callback function.
Definition audio_decoder.cpp:274
void play()
Starts audio playback.
Definition audio_decoder.cpp:133
void update()
Updates the audio buffer by decoding frames.
Definition audio_decoder.cpp:151
Implements video and audio playback using FFmpeg.
Definition ffmpeg_player.h:30