You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	framecrcenc: workaround design flaw in sidedata palette
This should be reverted once palettes are dealt with in a endian independant way in packets Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
		| @@ -34,13 +34,22 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt) | ||||
|     if (pkt->flags != AV_PKT_FLAG_KEY) | ||||
|         av_strlcatf(buf, sizeof(buf), ", F=0x%0X", pkt->flags); | ||||
|     if (pkt->side_data_elems) { | ||||
|         int i; | ||||
|         int i, j; | ||||
|         av_strlcatf(buf, sizeof(buf), ", S=%d", pkt->side_data_elems); | ||||
|  | ||||
|         for (i=0; i<pkt->side_data_elems; i++) { | ||||
|             uint32_t side_data_crc = av_adler32_update(0, | ||||
|                                                     pkt->side_data[i].data, | ||||
|                                                     pkt->side_data[i].size); | ||||
|             uint32_t side_data_crc = 0; | ||||
|             if (HAVE_BIGENDIAN && AV_PKT_DATA_PALETTE == pkt->side_data[i].type) { | ||||
|                 for (j=0; j<pkt->side_data[i].size; j++) { | ||||
|                     side_data_crc = av_adler32_update(side_data_crc, | ||||
|                                                       pkt->side_data[i].data + (j^3), | ||||
|                                                       1); | ||||
|                 } | ||||
|             } else { | ||||
|                 side_data_crc = av_adler32_update(0, | ||||
|                                                   pkt->side_data[i].data, | ||||
|                                                   pkt->side_data[i].size); | ||||
|             } | ||||
|             av_strlcatf(buf, sizeof(buf), ", %8d, 0x%08x", pkt->side_data[i].size, side_data_crc); | ||||
|         } | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user