Home | History | Annotate | Download | only in libvpx

Lines Matching refs:webm_ctx

21 void reset(struct WebmInputContext *const webm_ctx) {
22 if (webm_ctx->reader != NULL) {
24 reinterpret_cast<mkvparser::MkvReader *>(webm_ctx->reader);
27 if (webm_ctx->segment != NULL) {
29 reinterpret_cast<mkvparser::Segment *>(webm_ctx->segment);
32 if (webm_ctx->buffer != NULL) {
33 delete[] webm_ctx->buffer;
35 webm_ctx->reader = NULL;
36 webm_ctx->segment = NULL;
37 webm_ctx->buffer = NULL;
38 webm_ctx->cluster = NULL;
39 webm_ctx->block_entry = NULL;
40 webm_ctx->block = NULL;
41 webm_ctx->block_frame_index = 0;
42 webm_ctx->video_track_index = 0;
43 webm_ctx->timestamp_ns = 0;
44 webm_ctx->is_key_frame = false;
47 void get_first_cluster(struct WebmInputContext *const webm_ctx) {
49 reinterpret_cast<mkvparser::Segment *>(webm_ctx->segment);
51 webm_ctx->cluster = cluster;
54 void rewind_and_reset(struct WebmInputContext *const webm_ctx,
57 reset(webm_ctx);
62 int file_is_webm(struct WebmInputContext *webm_ctx,
65 webm_ctx->reader = reader;
66 webm_ctx->reached_eos = 0;
71 rewind_and_reset(webm_ctx, vpx_ctx);
77 rewind_and_reset(webm_ctx, vpx_ctx);
80 webm_ctx->segment = segment;
82 rewind_and_reset(webm_ctx, vpx_ctx);
92 webm_ctx->video_track_index = static_cast<int>(track->GetNumber());
98 rewind_and_reset(webm_ctx, vpx_ctx);
107 rewind_and_reset(webm_ctx, vpx_ctx);
116 get_first_cluster(webm_ctx);
121 int webm_read_frame(struct WebmInputContext *webm_ctx, uint8_t **buffer,
125 if (webm_ctx->reached_eos) {
129 reinterpret_cast<mkvparser::Segment *>(webm_ctx->segment);
131 reinterpret_cast<const mkvparser::Cluster *>(webm_ctx->cluster);
133 reinterpret_cast<const mkvparser::Block *>(webm_ctx->block);
135 reinterpret_cast<const mkvparser::BlockEntry *>(webm_ctx->block_entry);
147 webm_ctx->reached_eos = 1;
154 webm_ctx->block_frame_index == block->GetFrameCount() ||
155 block->GetTrackNumber() != webm_ctx->video_track_index) {
169 webm_ctx->block_frame_index = 0;
172 block->GetTrackNumber() != webm_ctx->video_track_index);
174 webm_ctx->cluster = cluster;
175 webm_ctx->block_entry = block_entry;
176 webm_ctx->block = block;
179 block->GetFrame(webm_ctx->block_frame_index);
180 ++webm_ctx->block_frame_index;
187 webm_ctx->buffer = *buffer;
190 webm_ctx->timestamp_ns = block->GetTime(cluster);
191 webm_ctx->is_key_frame = block->IsKey();
194 reinterpret_cast<mkvparser::MkvReader *>(webm_ctx->reader);
198 int webm_guess_framerate(struct WebmInputContext *webm_ctx,
203 while (webm_ctx->timestamp_ns < 1000000000 && i < 50) {
204 if (webm_read_frame(webm_ctx, &buffer, &buffer_size)) {
211 static_cast<int>(webm_ctx->timestamp_ns / 1000);
214 get_first_cluster(webm_ctx);
215 webm_ctx->block = NULL;
216 webm_ctx->block_entry = NULL;
217 webm_ctx->block_frame_index = 0;
218 webm_ctx->timestamp_ns = 0;
219 webm_ctx->reached_eos = 0;
224 void webm_free(struct WebmInputContext *webm_ctx) { reset(webm_ctx); }