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

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

 AVStreamWrapper ()
 
virtual ~AVStreamWrapper ()
 
virtual void reset ()
 
virtual void close ()
 
virtual bool open (AVFormatContext *format_ctx)=0
 
virtual bool open (AVFormatContext *format_ctx, AVMediaType type_)
 

Открытые атрибуты

AVMediaType type
 
int stream_idx
 
AVStreamstream
 
AVCodecdec
 
AVCodecContextdec_ctx
 
std::queue< PMemBuffer, std::deque< PMemBuffer > > queue
 

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

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

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

◆ AVStreamWrapper()

AVStreamWrapper::AVStreamWrapper ( )
inline

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

48  {
50  stream_idx = -1;
51  stream = nullptr;
52  dec = nullptr;
53  dec_ctx = nullptr;
54  }

Перекрестные ссылки AVMEDIA_TYPE_UNKNOWN, dec, dec_ctx и stream_idx.

◆ ~AVStreamWrapper()

virtual AVStreamWrapper::~AVStreamWrapper ( )
inlinevirtual

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

56  {
57  close();
58  }

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

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

Методы

◆ reset()

virtual void AVStreamWrapper::reset ( )
inlinevirtual

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

60  {
61  if (dec_ctx != nullptr) {
63  }
64  }

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

Используется в Movie::GetFrame().

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

◆ close()

virtual void AVStreamWrapper::close ( )
inlinevirtual

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

66  {
68  stream_idx = -1;
69  stream = nullptr;
70  dec = nullptr;
71  if (dec_ctx != nullptr) {
72  // Close the codec
74  logger->Warning(L"close decoder context file\n");
75  dec_ctx = nullptr;
76  }
77  }

Перекрестные ссылки avcodec_close(), AVMEDIA_TYPE_UNKNOWN, dec, dec_ctx, logger, stream_idx и Log::Warning().

Используется в open(), Movie::ReleaseAVCodec() и ~AVStreamWrapper().

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

◆ open() [1/2]

virtual bool AVStreamWrapper::open ( AVFormatContext format_ctx)
pure virtual

Замещается в AVVideoStream и AVAudioStream.

Используется в AVAudioStream::open() и AVVideoStream::open().

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

◆ open() [2/2]

virtual bool AVStreamWrapper::open ( AVFormatContext format_ctx,
AVMediaType  type_ 
)
inlinevirtual

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

81  {
82  stream_idx = av_find_best_stream(format_ctx, type_, -1, -1, &dec, 0);
83  if (stream_idx < 0) {
84  close();
85  fprintf(stderr, "ffmpeg: Unable to find audio stream\n");
86  return false;
87  }
88 
89  stream = format_ctx->streams[stream_idx];
91  if (dec_ctx == nullptr) {
92  close();
93  return false;
94  }
95 
96  if (avcodec_parameters_to_context(dec_ctx, stream->codecpar) < 0) {
97  close();
98  return false;
99  }
100  if (avcodec_open2(dec_ctx, dec, nullptr) < 0) {
101  close();
102  return false;
103  }
104 
105  return true;
106  }

Перекрестные ссылки av_find_best_stream(), avcodec_alloc_context3(), avcodec_open2(), avcodec_parameters_to_context(), close(), dec, dec_ctx, stream_idx и AVFormatContext::streams.

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

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

◆ type

AVMediaType AVStreamWrapper::type

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

◆ stream_idx

int AVStreamWrapper::stream_idx

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

Используется в AVStreamWrapper(), close(), Movie::GetFrame(), Movie::Load() и open().

◆ stream

AVStream* AVStreamWrapper::stream

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

Используется в Movie::GetFrame().

◆ dec

AVCodec* AVStreamWrapper::dec

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

Используется в AVStreamWrapper(), close() и open().

◆ dec_ctx

AVCodecContext* AVStreamWrapper::dec_ctx

◆ queue

std::queue<PMemBuffer, std::deque<PMemBuffer> > AVStreamWrapper::queue

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

Используется в AVAudioStream::decode_frame() и AVVideoStream::decode_frame().


Объявления и описания членов класса находятся в файле:
avcodec_close
int avcodec_close(AVCodecContext *avctx)
AVStreamWrapper::dec
AVCodec * dec
Definition: MediaPlayer.cpp:111
AVStreamWrapper::close
virtual void close()
Definition: MediaPlayer.cpp:66
AVStreamWrapper::dec_ctx
AVCodecContext * dec_ctx
Definition: MediaPlayer.cpp:112
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
avcodec_open2
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options)
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
type
EGLenum type
Definition: SDL_egl.h:850
AVMEDIA_TYPE_UNKNOWN
@ AVMEDIA_TYPE_UNKNOWN
Usually treated as AVMEDIA_TYPE_DATA.
Definition: avutil.h:200
stream
EGLStreamKHR stream
Definition: SDL_egl.h:1082
AVFormatContext::streams
AVStream ** streams
Definition: avformat.h:1412
avcodec_parameters_to_context
int avcodec_parameters_to_context(AVCodecContext *codec, const AVCodecParameters *par)
avcodec_flush_buffers
void avcodec_flush_buffers(AVCodecContext *avctx)
logger
Log * logger
Definition: IocContainer.cpp:47
AVStreamWrapper::stream_idx
int stream_idx
Definition: MediaPlayer.cpp:109
av_find_best_stream
int av_find_best_stream(AVFormatContext *ic, enum AVMediaType type, int wanted_stream_nb, int related_stream, AVCodec **decoder_ret, int flags)