268{
270
272
274 uint8_t q = -1;
275 unsigned received_bytes = 0;
276 unsigned frame_max_len = 0;
277
278 while (cdata != NULL) {
280 unsigned char *pckt_data = (unsigned char *) pckt->data;
281
282 uint32_t hdr = 0;
283 memcpy(&hdr, pckt_data, sizeof hdr);
284 const unsigned off = ntohl(hdr) & 0xFFFFFFU;
285 memcpy(&q, pckt_data + 5, sizeof q);
290 if (hdr_end == NULL) {
291 return false;
292 }
295 } else {
297 }
298
300 const unsigned char *end =
301 (unsigned char *) pckt->data + pckt->data_len;
303 }
304
305 const long payload_hdr_len =
306 pckt_data - (unsigned char *) pckt->data;
307 const long data_len = pckt->data_len - payload_hdr_len;
308 const unsigned frame_off = off + dec_data->
offset_len;
310
311 received_bytes += data_len;
312 frame_max_len =
MAX(frame_max_len, off + data_len);
313
315 }
316
322 }
323
326 "Dropping frame - missing quantization tables for Q=%d!\n",
327 q);
328 return false;
329 }
330
333
334 char *frame_end =
338
339 if (received_bytes != frame_max_len) {
340 MSG(
DEBUG,
"Frame incomplete - expected %u bytes, got %u B!\n",
341 frame_max_len, received_bytes);
342 }
343
345
346 return true;
347}
struct video_frame * frame
void jpeg_writer_fill_dqt(char *buffer, uint8_t quant_table[2][JPEG_QUANT_SIZE])
void jpeg_writer_write_eoi(char **buffer)
@ QUANT_TAB_T_FIRST_STATIC
static char * create_jpeg_frame(struct video_frame *frame, unsigned char **pckt_data, char **dqt_start, int verbose_adj)
static void MakeTables(int q, u_char *lqt, u_char *cqt)
static void skip_jpeg_headers(unsigned char **pckt_data)
static void parse_quant_tables(struct decode_data_rtsp *dec, unsigned char **pckt_data, const unsigned char *end, int q)
struct decode_data_rtsp::@46::@49 jpeg
int not_first_run
decrease verbosity next time
bool quantization_table_set[JPEG_QUANT_TAB_COUNT]
struct video_frame * frame
uint8_t quantization_tables[JPEG_QUANT_TAB_COUNT][JPEG_Q_TAB_COUNT][JPEG_QUANT_SIZE]
char * data
Raw tile data. Pointer must be at least 4B aligned.
unsigned int data_len
length of the data
Struct video_frame represents a video frame and contains video description.
struct tile tiles[FLEXIBLE_ARRAY_MEMBER]