Do not transmit MediaCodec flags

Since PTS handling has been fixed, the recorder do not associate a PTS
to a wrong frame anymore, so PTS of "configuration packets" (which never
produce a frame), are never read by the recorder. Therefore, there is no
need to ignore them explicitly, so we can remove the MediaCodec flags
completely.
This commit is contained in:
Romain Vimont
2018-11-11 00:35:53 +01:00
parent 27e8a9a79d
commit 475912a39c
3 changed files with 11 additions and 20 deletions

View File

@@ -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 16
#define HEADER_SIZE 12
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;
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;
}
// 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;
}
}