rtpdec_hevc: Skip 1 byte (DOND) instead of 2 (DONL) between aggregation units
Only the first aggregation unit has 2 bytes (DONL) prepended, if such a field is in use. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
		
							parent
							
								
									35c6ce76b1
								
							
						
					
					
						commit
						fe208ca54b
					
				| @ -181,7 +181,7 @@ static int sdp_parse_fmtp_config_h264(AVFormatContext *s, | ||||
| 
 | ||||
| int ff_h264_handle_aggregated_packet(AVFormatContext *ctx, AVPacket *pkt, | ||||
|                                      const uint8_t *buf, int len, | ||||
|                                      int start_skip, int *nal_counters, | ||||
|                                      int skip_between, int *nal_counters, | ||||
|                                      int nal_mask) | ||||
| { | ||||
|     int pass         = 0; | ||||
| @ -194,9 +194,6 @@ int ff_h264_handle_aggregated_packet(AVFormatContext *ctx, AVPacket *pkt, | ||||
|         const uint8_t *src = buf; | ||||
|         int src_len        = len; | ||||
| 
 | ||||
|         src     += start_skip; | ||||
|         src_len -= start_skip; | ||||
| 
 | ||||
|         while (src_len > 2) { | ||||
|             uint16_t nal_size = AV_RB16(src); | ||||
| 
 | ||||
| @ -224,8 +221,8 @@ int ff_h264_handle_aggregated_packet(AVFormatContext *ctx, AVPacket *pkt, | ||||
|             } | ||||
| 
 | ||||
|             // eat what we handled
 | ||||
|             src     += nal_size + start_skip; | ||||
|             src_len -= nal_size + start_skip; | ||||
|             src     += nal_size + skip_between; | ||||
|             src_len -= nal_size + skip_between; | ||||
|         } | ||||
| 
 | ||||
|         if (pass == 0) { | ||||
|  | ||||
| @ -317,9 +317,15 @@ static int hevc_handle_packet(AVFormatContext *ctx, PayloadContext *rtp_hevc_ctx | ||||
|         buf += RTP_HEVC_PAYLOAD_HEADER_SIZE; | ||||
|         len -= RTP_HEVC_PAYLOAD_HEADER_SIZE; | ||||
| 
 | ||||
|         /* pass the HEVC DONL field */ | ||||
|         if (rtp_hevc_ctx->using_donl_field) { | ||||
|             buf += RTP_HEVC_DONL_FIELD_SIZE; | ||||
|             len -= RTP_HEVC_DONL_FIELD_SIZE; | ||||
|         } | ||||
| 
 | ||||
|         res = ff_h264_handle_aggregated_packet(ctx, pkt, buf, len, | ||||
|                                                rtp_hevc_ctx->using_donl_field ? | ||||
|                                                RTP_HEVC_DONL_FIELD_SIZE : 0, | ||||
|                                                RTP_HEVC_DOND_FIELD_SIZE : 0, | ||||
|                                                NULL, 0); | ||||
|         if (res < 0) | ||||
|             return res; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user