FastLED 3.9.15
Loading...
Searching...
No Matches

◆ plm_demux_has_headers()

int fl::third_party::plm_demux_has_headers ( plm_demux_t * self)

Definition at line 1181 of file pl_mpeg.hpp.

1181 {
1182 if (self->has_headers) {
1183 return TRUE;
1184 }
1185
1186 // Decode pack header
1187 if (!self->has_pack_header) {
1188 if (
1189 self->start_code != PLM_START_PACK &&
1191 ) {
1192 return FALSE;
1193 }
1194
1195 self->start_code = PLM_START_PACK;
1196 if (!plm_buffer_has(self->buffer, 64)) {
1197 return FALSE;
1198 }
1199 self->start_code = -1;
1200
1201 if (plm_buffer_read(self->buffer, 4) != 0x02) {
1202 return FALSE;
1203 }
1204
1206 plm_buffer_skip(self->buffer, 1);
1207 plm_buffer_skip(self->buffer, 22); // mux_rate * 50
1208 plm_buffer_skip(self->buffer, 1);
1209
1210 self->has_pack_header = TRUE;
1211 }
1212
1213 // Decode system header
1214 if (!self->has_system_header) {
1215 if (
1216 self->start_code != PLM_START_SYSTEM &&
1218 ) {
1219 return FALSE;
1220 }
1221
1223 if (!plm_buffer_has(self->buffer, 56)) {
1224 return FALSE;
1225 }
1226 self->start_code = -1;
1227
1228 plm_buffer_skip(self->buffer, 16); // header_length
1229 plm_buffer_skip(self->buffer, 24); // rate bound
1230 self->num_audio_streams = plm_buffer_read(self->buffer, 6);
1231 plm_buffer_skip(self->buffer, 5); // misc flags
1232 self->num_video_streams = plm_buffer_read(self->buffer, 5);
1233
1234 self->has_system_header = TRUE;
1235 }
1236
1237 self->has_headers = TRUE;
1238 return TRUE;
1239}
double plm_demux_decode_time(plm_demux_t *self) FL_NOEXCEPT
Definition pl_mpeg.hpp:1557
int plm_buffer_read(plm_buffer_t *self, int count) FL_NOEXCEPT
Definition pl_mpeg.hpp:1017
static const int PLM_START_PACK
Definition pl_mpeg.hpp:1128
int plm_buffer_has(plm_buffer_t *self, size_t count) FL_NOEXCEPT
Definition pl_mpeg.hpp:998
int plm_buffer_find_start_code(plm_buffer_t *self, int code) FL_NOEXCEPT
Definition pl_mpeg.hpp:1078
static const int PLM_START_SYSTEM
Definition pl_mpeg.hpp:1130
void plm_buffer_skip(plm_buffer_t *self, size_t count) FL_NOEXCEPT
Definition pl_mpeg.hpp:1044
#define TRUE
Definition pl_mpeg.hpp:174
#define FALSE
Definition pl_mpeg.hpp:175

References FALSE, FL_NOEXCEPT, plm_buffer_find_start_code(), plm_buffer_has(), plm_buffer_read(), plm_buffer_skip(), plm_demux_decode_time(), PLM_START_PACK, PLM_START_SYSTEM, and TRUE.

Referenced by plm_demux_create(), plm_demux_decode(), plm_demux_get_num_audio_streams(), plm_demux_get_num_video_streams(), plm_demux_seek(), plm_has_headers(), and plm_init_decoders().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: