You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	lavf/avienc: Add xxpc entries to index
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
				
					committed by
					
						 Michael Niedermayer
						Michael Niedermayer
					
				
			
			
				
	
			
			
			
						parent
						
							9ee5b40964
						
					
				
				
					commit
					77bc3e1944
				
			| @@ -32,7 +32,11 @@ | ||||
| #define AVI_MASTER_INDEX_SIZE   256 | ||||
| #define AVI_MAX_STREAM_COUNT    100 | ||||
|  | ||||
| /* stream header flags */ | ||||
| #define AVISF_VIDEO_PALCHANGES  0x00010000 | ||||
|  | ||||
| /* index flags */ | ||||
| #define AVIIF_INDEX             0x10 | ||||
| #define AVIIF_INDEX             0x00000010 | ||||
| #define AVIIF_NO_TIME           0x00000100 | ||||
|  | ||||
| #endif /* AVFORMAT_AVI_H */ | ||||
|   | ||||
| @@ -52,8 +52,6 @@ typedef struct AVIIentry { | ||||
|  | ||||
| #define AVI_INDEX_CLUSTER_SIZE 16384 | ||||
|  | ||||
| #define AVISF_VIDEO_PALCHANGES 0x00010000 | ||||
|  | ||||
| typedef struct AVIIndex { | ||||
|     int64_t     indx_start; | ||||
|     int64_t     audio_strm_offset; | ||||
| @@ -652,9 +650,13 @@ static int avi_write_idx1(AVFormatContext *s) | ||||
|             } | ||||
|             if (!empty) { | ||||
|                 avist = s->streams[stream_id]->priv_data; | ||||
|                 if (*ie->tag) | ||||
|                     ffio_wfourcc(pb, ie->tag); | ||||
|                 else { | ||||
|                     avi_stream2fourcc(tag, stream_id, | ||||
|                                   s->streams[stream_id]->codec->codec_type); | ||||
|                     ffio_wfourcc(pb, tag); | ||||
|                 } | ||||
|                 avio_wl32(pb, ie->flags); | ||||
|                 avio_wl32(pb, ie->pos); | ||||
|                 avio_wl32(pb, ie->len); | ||||
| @@ -749,6 +751,20 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) | ||||
|                     unsigned char tag[5]; | ||||
|                     avi_stream2fourcc(tag, stream_index, enc->codec_type); | ||||
|                     tag[2] = 'p'; tag[3] = 'c'; | ||||
|                     if (s->pb->seekable) { | ||||
|                         int ret; | ||||
|                         if (avist->strh_flags_offset) { | ||||
|                             int64_t cur_offset = avio_tell(pb); | ||||
|                             avio_seek(pb, avist->strh_flags_offset, SEEK_SET); | ||||
|                             avio_wl32(pb, AVISF_VIDEO_PALCHANGES); | ||||
|                             avio_seek(pb, cur_offset, SEEK_SET); | ||||
|                             avist->strh_flags_offset = 0; | ||||
|                         } | ||||
|                         ret = avi_add_ientry(s, stream_index, tag, AVIIF_NO_TIME, | ||||
|                                        pal_size * 4 + 4); | ||||
|                         if (ret < 0) | ||||
|                             return ret; | ||||
|                     } | ||||
|                     pc_tag = ff_start_tag(pb, tag); | ||||
|                     avio_w8(pb, 0); | ||||
|                     avio_w8(pb, pal_size & 0xFF); | ||||
| @@ -759,13 +775,6 @@ static int avi_write_packet(AVFormatContext *s, AVPacket *pkt) | ||||
|                     } | ||||
|                     ff_end_tag(pb, pc_tag); | ||||
|                     memcpy(avist->old_palette, avist->palette, pal_size * 4); | ||||
|                     if (pb->seekable && avist->strh_flags_offset) { | ||||
|                         int64_t cur_offset = avio_tell(pb); | ||||
|                         avio_seek(pb, avist->strh_flags_offset, SEEK_SET); | ||||
|                         avio_wl32(pb, AVISF_VIDEO_PALCHANGES); | ||||
|                         avio_seek(pb, cur_offset, SEEK_SET); | ||||
|                         avist->strh_flags_offset = 0; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| ba77c5c8bd2b0d1e0478d143346cc3b3 *./tests/data/lavf-fate/lavf.avi | ||||
| 928228 ./tests/data/lavf-fate/lavf.avi | ||||
| 6fc88702c23b895c305c5e1f51a0904e *./tests/data/lavf-fate/lavf.avi | ||||
| 928260 ./tests/data/lavf-fate/lavf.avi | ||||
| ./tests/data/lavf-fate/lavf.avi CRC=0xa4770de2 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user