You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
rtpdec_hevc: Reduce indentation level by returning early on errors
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
@@ -315,39 +315,39 @@ static int hevc_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_hevc_ctx
|
|||||||
|
|
||||||
av_dlog(ctx, " FU type %d with %d bytes\n", fu_type, len);
|
av_dlog(ctx, " FU type %d with %d bytes\n", fu_type, len);
|
||||||
|
|
||||||
if (len > 0) {
|
if (len <= 0) {
|
||||||
new_nal_header[0] = (rtp_pl[0] & 0x81) | (fu_type << 1);
|
|
||||||
new_nal_header[1] = rtp_pl[1];
|
|
||||||
|
|
||||||
/* start fragment vs. subsequent fragments */
|
|
||||||
if (first_fragment) {
|
|
||||||
if (!last_fragment) {
|
|
||||||
/* create A/V packet which is big enough */
|
|
||||||
if ((res = av_new_packet(pkt, sizeof(start_sequence) + sizeof(new_nal_header) + len)) < 0)
|
|
||||||
return res;
|
|
||||||
/* A/V packet: copy start sequence */
|
|
||||||
memcpy(pkt->data, start_sequence, sizeof(start_sequence));
|
|
||||||
/* A/V packet: copy new NAL header */
|
|
||||||
memcpy(pkt->data + sizeof(start_sequence), new_nal_header, sizeof(new_nal_header));
|
|
||||||
/* A/V packet: copy NAL unit data */
|
|
||||||
memcpy(pkt->data + sizeof(start_sequence) + sizeof(new_nal_header), buf, len);
|
|
||||||
} else {
|
|
||||||
av_log(ctx, AV_LOG_ERROR, "Illegal combination of S and E bit in RTP/HEVC packet\n");
|
|
||||||
res = AVERROR_INVALIDDATA;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* create A/V packet */
|
|
||||||
if ((res = av_new_packet(pkt, len)) < 0)
|
|
||||||
return res;
|
|
||||||
/* A/V packet: copy NAL unit data */
|
|
||||||
memcpy(pkt->data, buf, len);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
/* sanity check for size of input packet: 1 byte payload at least */
|
/* sanity check for size of input packet: 1 byte payload at least */
|
||||||
av_log(ctx, AV_LOG_ERROR,
|
av_log(ctx, AV_LOG_ERROR,
|
||||||
"Too short RTP/HEVC packet, got %d bytes of NAL unit type %d\n",
|
"Too short RTP/HEVC packet, got %d bytes of NAL unit type %d\n",
|
||||||
len, nal_type);
|
len, nal_type);
|
||||||
res = AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (first_fragment && last_fragment) {
|
||||||
|
av_log(ctx, AV_LOG_ERROR, "Illegal combination of S and E bit in RTP/HEVC packet\n");
|
||||||
|
return AVERROR_INVALIDDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
new_nal_header[0] = (rtp_pl[0] & 0x81) | (fu_type << 1);
|
||||||
|
new_nal_header[1] = rtp_pl[1];
|
||||||
|
|
||||||
|
/* start fragment vs. subsequent fragments */
|
||||||
|
if (first_fragment) {
|
||||||
|
/* create A/V packet which is big enough */
|
||||||
|
if ((res = av_new_packet(pkt, sizeof(start_sequence) + sizeof(new_nal_header) + len)) < 0)
|
||||||
|
return res;
|
||||||
|
/* A/V packet: copy start sequence */
|
||||||
|
memcpy(pkt->data, start_sequence, sizeof(start_sequence));
|
||||||
|
/* A/V packet: copy new NAL header */
|
||||||
|
memcpy(pkt->data + sizeof(start_sequence), new_nal_header, sizeof(new_nal_header));
|
||||||
|
/* A/V packet: copy NAL unit data */
|
||||||
|
memcpy(pkt->data + sizeof(start_sequence) + sizeof(new_nal_header), buf, len);
|
||||||
|
} else {
|
||||||
|
/* create A/V packet */
|
||||||
|
if ((res = av_new_packet(pkt, len)) < 0)
|
||||||
|
return res;
|
||||||
|
/* A/V packet: copy NAL unit data */
|
||||||
|
memcpy(pkt->data, buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user