Browse Source

rtpdec_jpeg: Merge two if statements

This makes the code more readable and robust.

Signed-off-by: Martin Storsjö <martin@martin.st>
tags/n1.0
Martin Storsjö 12 years ago
parent
commit
932d8300d3
1 changed files with 30 additions and 31 deletions
  1. +30
    -31
      libavformat/rtpdec_jpeg.c

+ 30
- 31
libavformat/rtpdec_jpeg.c View File

@@ -252,44 +252,43 @@ static int jpeg_parse_packet(AVFormatContext *ctx, PayloadContext *jpeg,
}

/* Parse the quantization table header. */
if (q > 127 && off == 0) {
uint8_t precision;

if (len < 4) {
av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
return AVERROR_INVALIDDATA;
}
if (off == 0) {
/* Start of JPEG data packet. */
uint8_t new_qtables[128];
uint8_t hdr[1024];

/* The first byte is reserved for future use. */
precision = AV_RB8(buf + 1); /* size of coefficients */
qtable_len = AV_RB16(buf + 2); /* length in bytes */
buf += 4;
len -= 4;
if (q > 127) {
uint8_t precision;
if (len < 4) {
av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
return AVERROR_INVALIDDATA;
}

if (precision)
av_log(ctx, AV_LOG_WARNING, "Only 8-bit precision is supported.\n");
/* The first byte is reserved for future use. */
precision = AV_RB8(buf + 1); /* size of coefficients */
qtable_len = AV_RB16(buf + 2); /* length in bytes */
buf += 4;
len -= 4;

if (q == 255 && qtable_len == 0) {
av_log(ctx, AV_LOG_ERROR,
"Invalid RTP/JPEG packet. Quantization tables not found.\n");
return AVERROR_INVALIDDATA;
}
if (precision)
av_log(ctx, AV_LOG_WARNING, "Only 8-bit precision is supported.\n");

if (qtable_len > 0) {
if (len < qtable_len) {
av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
if (q == 255 && qtable_len == 0) {
av_log(ctx, AV_LOG_ERROR,
"Invalid RTP/JPEG packet. Quantization tables not found.\n");
return AVERROR_INVALIDDATA;
}
qtables = buf;
buf += qtable_len;
len -= qtable_len;
}
}

if (off == 0) {
/* Start of JPEG data packet. */
uint8_t new_qtables[128];
uint8_t hdr[1024];
if (qtable_len > 0) {
if (len < qtable_len) {
av_log(ctx, AV_LOG_ERROR, "Too short RTP/JPEG packet.\n");
return AVERROR_INVALIDDATA;
}
qtables = buf;
buf += qtable_len;
len -= qtable_len;
}
}

/* Skip the current frame in case of the end packet
* has been lost somewhere. */


Loading…
Cancel
Save