World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс AudioBufferDataSource
+ Граф наследования:AudioBufferDataSource:
+ Граф связей класса AudioBufferDataSource:

Открытые члены

 AudioBufferDataSource (PMemBuffer buffer)
 
virtual ~AudioBufferDataSource ()
 
bool Open ()
 
- Открытые члены унаследованные от AudioBaseDataSource
 AudioBaseDataSource ()
 
virtual ~AudioBaseDataSource ()
 
virtual void Close ()
 
virtual size_t GetSampleRate ()
 
virtual size_t GetChannelCount ()
 
virtual PMemBuffer GetNextBuffer ()
 
- Открытые члены унаследованные от IAudioDataSource
 IAudioDataSource ()
 
virtual ~IAudioDataSource ()
 

Защищенные члены

int ReadPacket (uint8_t *buf, int buf_size)
 

Защищенные статические члены

static int read_packet (void *opaque, uint8_t *buf, int buf_size)
 

Защищенные данные

PMemBuffer buffer
 
uint8_tbuf_pos
 
uint8_tbuf_end
 
uint8_tavio_ctx_buffer
 
size_t avio_ctx_buffer_size
 
AVIOContextavio_ctx
 
- Защищенные данные унаследованные от AudioBaseDataSource
AVFormatContextpFormatContext
 
int iStreamIndex
 
AVCodecContextpCodecContext
 
SwrContextpConverter
 
bool bOpened
 
std::queue< PMemBuffer, std::deque< PMemBuffer > > queue
 

Подробное описание

См. определение в файле MediaPlayer.cpp строка 1084

Конструктор(ы)

◆ AudioBufferDataSource()

AudioBufferDataSource::AudioBufferDataSource ( PMemBuffer  buffer)
explicit

См. определение в файле MediaPlayer.cpp строка 1103

1104  : buffer(buffer) {
1105  buf_pos = nullptr;
1106  buf_end = nullptr;
1107  avio_ctx_buffer = nullptr;
1108  avio_ctx_buffer_size = 4096;
1109  avio_ctx = nullptr;
1110 }

Перекрестные ссылки avio_ctx, avio_ctx_buffer, avio_ctx_buffer_size, buf_end и buf_pos.

◆ ~AudioBufferDataSource()

virtual AudioBufferDataSource::~AudioBufferDataSource ( )
inlinevirtual

См. определение в файле MediaPlayer.cpp строка 1087

1087 {}

Методы

◆ Open()

bool AudioBufferDataSource::Open ( )
virtual

Переопределяет метод предка AudioBaseDataSource.

См. определение в файле MediaPlayer.cpp строка 1112

1112  {
1113  if (bOpened) {
1114  return true;
1115  }
1116 
1118  if (pFormatContext == nullptr) {
1119  return false;
1120  }
1121 
1123  if (avio_ctx_buffer == nullptr) {
1124  Close();
1125  return false;
1126  }
1127 
1129  this, &read_packet, nullptr, nullptr);
1130  if (!avio_ctx) {
1131  Close();
1132  return false;
1133  }
1134 
1136 
1137  buf_pos = (uint8_t*)buffer->GetData();
1138  buf_end = buf_pos + buffer->GetSize();
1139 
1140  // Open audio file
1141  if (avformat_open_input(&pFormatContext, nullptr, nullptr, nullptr) < 0) {
1142  fprintf(stderr, "ffmpeg: Unable to open input buffer\n");
1143  return false;
1144  }
1145 
1146  // Dump information about buffer onto standard error
1147  av_dump_format(pFormatContext, 0, nullptr, 0);
1148 
1149  return AudioBaseDataSource::Open();
1150 }

Перекрестные ссылки av_dump_format(), av_malloc(), avformat_alloc_context(), avformat_open_input(), avio_alloc_context(), avio_ctx, avio_ctx_buffer, avio_ctx_buffer_size, AudioBaseDataSource::bOpened, buf_end, buf_pos, AudioBaseDataSource::Close(), AudioBaseDataSource::Open(), AVFormatContext::pb, AudioBaseDataSource::pFormatContext и read_packet().

+ Граф вызовов:

◆ read_packet()

int AudioBufferDataSource::read_packet ( void opaque,
uint8_t buf,
int  buf_size 
)
staticprotected

См. определение в файле MediaPlayer.cpp строка 1152

1153  {
1154  AudioBufferDataSource *pThis = (AudioBufferDataSource *)opaque;
1155  return pThis->ReadPacket(buf, buf_size);
1156 }

Перекрестные ссылки ReadPacket().

Используется в Open().

+ Граф вызовов:
+ Граф вызова функции:

◆ ReadPacket()

int AudioBufferDataSource::ReadPacket ( uint8_t buf,
int  buf_size 
)
protected

См. определение в файле MediaPlayer.cpp строка 1158

1158  {
1159  int size = buf_end - buf_pos;
1160  if (size <= 0) {
1161  return 0;
1162  }
1163  size = std::min(buf_size, size);
1164  memcpy(buf, buf_pos, size);
1165  buf_pos += size;
1166  return size;
1167 }

Перекрестные ссылки buf_end и buf_pos.

Используется в read_packet().

+ Граф вызова функции:

Данные класса

◆ buffer

PMemBuffer AudioBufferDataSource::buffer
protected

См. определение в файле MediaPlayer.cpp строка 1092

◆ buf_pos

uint8_t* AudioBufferDataSource::buf_pos
protected

См. определение в файле MediaPlayer.cpp строка 1093

Используется в AudioBufferDataSource(), Open() и ReadPacket().

◆ buf_end

uint8_t* AudioBufferDataSource::buf_end
protected

См. определение в файле MediaPlayer.cpp строка 1094

Используется в AudioBufferDataSource(), Open() и ReadPacket().

◆ avio_ctx_buffer

uint8_t* AudioBufferDataSource::avio_ctx_buffer
protected

См. определение в файле MediaPlayer.cpp строка 1095

Используется в AudioBufferDataSource() и Open().

◆ avio_ctx_buffer_size

size_t AudioBufferDataSource::avio_ctx_buffer_size
protected

См. определение в файле MediaPlayer.cpp строка 1096

Используется в AudioBufferDataSource() и Open().

◆ avio_ctx

AVIOContext* AudioBufferDataSource::avio_ctx
protected

См. определение в файле MediaPlayer.cpp строка 1097

Используется в AudioBufferDataSource() и Open().


Объявления и описания членов класса находятся в файле:
av_malloc
void * av_malloc(size_t size) av_malloc_attrib av_alloc_size(1)
AudioBufferDataSource::buffer
PMemBuffer buffer
Definition: MediaPlayer.cpp:1092
AudioBufferDataSource
Definition: MediaPlayer.cpp:1084
AudioBufferDataSource::buf_end
uint8_t * buf_end
Definition: MediaPlayer.cpp:1094
av_dump_format
void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_output)
AudioBufferDataSource::avio_ctx
AVIOContext * avio_ctx
Definition: MediaPlayer.cpp:1097
AudioBufferDataSource::buf_pos
uint8_t * buf_pos
Definition: MediaPlayer.cpp:1093
buffer
EGLContext EGLenum EGLClientBuffer buffer
Definition: SDL_egl.h:952
AudioBaseDataSource::bOpened
bool bOpened
Definition: MediaPlayer.cpp:901
buf
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: SDL_opengl_glext.h:2483
AudioBaseDataSource::pFormatContext
AVFormatContext * pFormatContext
Definition: MediaPlayer.cpp:897
AudioBufferDataSource::avio_ctx_buffer
uint8_t * avio_ctx_buffer
Definition: MediaPlayer.cpp:1095
avformat_alloc_context
AVFormatContext * avformat_alloc_context(void)
AudioBaseDataSource::Open
virtual bool Open()
Definition: MediaPlayer.cpp:913
avformat_open_input
int avformat_open_input(AVFormatContext **ps, const char *url, ff_const59 AVInputFormat *fmt, AVDictionary **options)
AudioBufferDataSource::ReadPacket
int ReadPacket(uint8_t *buf, int buf_size)
Definition: MediaPlayer.cpp:1158
uint8_t
unsigned __int8 uint8_t
Definition: SDL_config.h:35
avio_alloc_context
AVIOContext * avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int(*read_packet)(void *opaque, uint8_t *buf, int buf_size), int(*write_packet)(void *opaque, uint8_t *buf, int buf_size), int64_t(*seek)(void *opaque, int64_t offset, int whence))
AVFormatContext::pb
AVIOContext * pb
Definition: avformat.h:1386
AudioBufferDataSource::avio_ctx_buffer_size
size_t avio_ctx_buffer_size
Definition: MediaPlayer.cpp:1096
AudioBaseDataSource::Close
virtual void Close()
Definition: MediaPlayer.cpp:965
size
GLsizeiptr size
Definition: SDL_opengl_glext.h:540
AudioBufferDataSource::read_packet
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
Definition: MediaPlayer.cpp:1152