flacenc: send final extradata in packet side data
This commit is contained in:
		
							parent
							
								
									0957b274e3
								
							
						
					
					
						commit
						ed39cda029
					
				@ -114,6 +114,9 @@ typedef struct FlacEncodeContext {
 | 
			
		||||
    unsigned int md5_buffer_size;
 | 
			
		||||
    DSPContext dsp;
 | 
			
		||||
    FLACDSPContext flac_dsp;
 | 
			
		||||
 | 
			
		||||
    int flushed;
 | 
			
		||||
    int64_t next_pts;
 | 
			
		||||
} FlacEncodeContext;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1212,6 +1215,20 @@ static int flac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
 | 
			
		||||
        s->max_framesize = s->max_encoded_framesize;
 | 
			
		||||
        av_md5_final(s->md5ctx, s->md5sum);
 | 
			
		||||
        write_streaminfo(s, avctx->extradata);
 | 
			
		||||
 | 
			
		||||
        if (avctx->side_data_only_packets && !s->flushed) {
 | 
			
		||||
            uint8_t *side_data = av_packet_new_side_data(avpkt, AV_PKT_DATA_NEW_EXTRADATA,
 | 
			
		||||
                                                         avctx->extradata_size);
 | 
			
		||||
            if (!side_data)
 | 
			
		||||
                return AVERROR(ENOMEM);
 | 
			
		||||
            memcpy(side_data, avctx->extradata, avctx->extradata_size);
 | 
			
		||||
 | 
			
		||||
            avpkt->pts = s->next_pts;
 | 
			
		||||
 | 
			
		||||
            *got_packet_ptr = 1;
 | 
			
		||||
            s->flushed = 1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -1264,6 +1281,9 @@ static int flac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
 | 
			
		||||
    avpkt->pts      = frame->pts;
 | 
			
		||||
    avpkt->duration = ff_samples_to_time_base(avctx, frame->nb_samples);
 | 
			
		||||
    avpkt->size     = out_bytes;
 | 
			
		||||
 | 
			
		||||
    s->next_pts = avpkt->pts + avpkt->duration;
 | 
			
		||||
 | 
			
		||||
    *got_packet_ptr = 1;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user