@ -15,7 +15,6 @@
# include "recorder.h"
# define BUFSIZE 0x10000
# define MEDIA_CODEC_FLAG_CONFIG 2 // MediaCodec.BUFFER_FLAG_CODEC_CONFIG
static inline uint64_t from_be ( uint8_t * b , int size )
{
@ -30,7 +29,7 @@ static inline uint64_t from_be(uint8_t *b, int size)
return x ;
}
# define HEADER_SIZE 1 6
# define HEADER_SIZE 1 2
static int read_packet ( void * opaque , uint8_t * buf , int buf_size ) {
struct decoder * decoder = opaque ;
@ -50,8 +49,7 @@ static int read_packet(void *opaque, uint8_t *buf, int buf_size) {
// read the PTS for the next frame
decoder - > next_pts = from_be ( header , 8 ) ;
decoder - > buffer_info_flags = from_be ( header + 8 , 4 ) ;
remaining = from_be ( header + 12 , 4 ) ;
remaining = from_be ( header + 8 , 4 ) ;
}
if ( buf_size > remaining )
@ -181,20 +179,15 @@ static int run_decoder(void *data) {
# endif
if ( decoder - > recorder ) {
// do not record configuration packets
// (they contain no media data and have no PTS/DTS)
// FIXME do not use MediaCodec specific flags
if ( ! ( decoder - > buffer_info_flags & MEDIA_CODEC_FLAG_CONFIG ) ) {
packet . pts = decoder - > pts ;
packet . dts = decoder - > pts ;
// no need to rescale with av_packet_rescale_ts(), the timestamps
// are in microseconds both in input and output
if ( ! recorder_write ( decoder - > recorder , & packet ) ) {
LOGE ( " Could not write frame to output file " ) ;
av_packet_unref ( & packet ) ;
goto run_quit ;
}
packet . pts = decoder - > pts ;
packet . dts = decoder - > pts ;
// no need to rescale with av_packet_rescale_ts(), the timestamps
// are in microseconds both in input and output
if ( ! recorder_write ( decoder - > recorder , & packet ) ) {
LOGE ( " Could not write frame to output file " ) ;
av_packet_unref ( & packet ) ;
goto run_quit ;
}
}