goto DONE;
}
if (!bType) {
- if (have_frame && val == 0xB0)
+ if (val == 0xB0)
*have_frame = TRUE;
}
bType = val;
if (header == 0) {
g_print ("[ERROR] read header size is 0\n");
*have_frame = FALSE;
+ return;
}
/* if it's not a valid sync */
if ((header & 0xffe00000) != 0xffe00000) {
g_print ("[ERROR] invalid sync\n");
*have_frame = FALSE;
+ return;
}
if (((header >> 19) & 3) == 0x1) {
g_print ("[ERROR] invalid MPEG version: %d\n", (header >> 19) & 3);
*have_frame = FALSE;
+ return;
} else {
if (header & (1 << 20)) {
lsf = (header & (1 << 19)) ? 0 : 1;
if (!((header >> 17) & 3)) {
g_print("[ERROR] invalid layer: %d\n", (header >> 17) & 3);
*have_frame = FALSE;
+ return;
} else {
layer = 4 - ((header >> 17) & 0x3);
}
if (((header >> 12) & 0xf) == 0xf) {
g_print ("[ERROR] invalid bitrate: %d\n", (header >> 12) & 0xf);
*have_frame = FALSE;
+ return;
} else {
bitrate = (header >> 12) & 0xF;
hdr_bitrate = mp3types_bitrates[lsf][layer - 1][bitrate] * 1000;
/* The caller has ensured we have a valid header, so bitrate can't be zero here. */
- if (hdr_bitrate == 0)
+ if (hdr_bitrate == 0) {
*have_frame = FALSE;
+ return;
+ }
}
/* if it's an invalid samplerate */
read_size = readsize;
app->offset += header_size + readsize;
+ if (app->offset > app->length) {
+ read_size = 0;
+ *have_frame = FALSE;
+ g_print("[FAIL] offset error \n");
+ return;
+ }
+
} else {
read_size = 0;
g_print("[FAIL] Not found aac frame sync. \n");
case MEDIACODEC_AAC:
if (encoder) {
extractor = aacenc_extractor;
- mime = MEDIA_FORMAT_PCM;
+ mime = MEDIA_FORMAT_PCM_F32LE; /* FIXME need to check according to verdor */
} else {
extractor = aacdec_extractor;
mime = MEDIA_FORMAT_AAC;
case MEDIACODEC_AAC_HE:
if (encoder) {
extractor = aacenc_extractor;
- mime = MEDIA_FORMAT_PCM;
+ mime = MEDIA_FORMAT_PCM_F32LE; /* FIXME need to check according to verdor */
} else {
extractor = extract_input_aacdec_m4a_test;
mime = MEDIA_FORMAT_AAC_HE;
case MEDIACODEC_AMR_NB:
if (encoder) {
extractor = amrenc_extractor;
- mime = MEDIA_FORMAT_PCM;
+ mime = MEDIA_FORMAT_PCM_F32LE; /* FIXME need to check according to verdor */
app->is_amr_nb = TRUE;
} else {
extractor = amrdec_extractor;
case MEDIACODEC_AMR_WB:
if (encoder) {
extractor = amrenc_extractor;
- mime = MEDIA_FORMAT_PCM;
+ mime = MEDIA_FORMAT_PCM_F32LE; /* FIXME need to check according to verdor */
app->is_amr_nb = FALSE;
} else {
extractor = amrdec_extractor;
media_packet_get_video_stride_width(pkt, 1, &stride_width);
size = app->width * app->height / 2;
- for (i = 0; i< app->height / 2; i++) {
+ for (i = 0; i < app->height / 2; i++) {
memcpy(buf_data_ptr, tmp, app->width);
buf_data_ptr += stride_width;
tmp += app->width;
return TRUE;
}
-void _foreach_cb(mediacodec_codec_type_e codec_type, void *user_data)
+gboolean _foreach_cb(mediacodec_codec_type_e codec_type, void *user_data)
{
g_print("codec type : %x %s\n", codec_type, codec_type_to_string(codec_type));
- return;
+ return TRUE;
}
static void _mediacodec_prepare(App *app, bool frame_all)
case CURRENT_STATUS_PROCESS_INPUT:
{
app->frame = atoi(cmd);
- _mediacodec_process_input(app);
+
+ if (app->frame > 0 && app->frame < 10)
+ _mediacodec_process_input(app);
reset_menu_state();
}
break;
void *temp;
int i = 0;
int stride_width, stride_height;
- char filename[100] = {0};
+ gchar filename[100] = {0};
FILE *fp = NULL;
int ret = 0;
- sprintf(filename, "/tmp/dec_output_dump_%d_%d.yuv", app->width, app->height);
+ g_snprintf(filename, MAX_STRING_LEN, "/tmp/dec_output_dump_%d_%d.yuv", app->width, app->height);
fp = fopen(filename, "ab");
media_packet_get_video_plane_data_ptr(pkt, 0, &temp);
{
void *temp;
uint64_t buf_size;
- char filename[100] = {0};
+ gchar filename[100] = {0};
FILE *fp = NULL;
int ret = 0;
char adts[100] = {0, };
- sprintf(filename, "/tmp/dec_output_dump_%d.out", app->type);
+ g_snprintf(filename, MAX_STRING_LEN, "/tmp/dec_output_dump_%d.out", app->type);
fp = fopen(filename, "ab");
media_packet_get_buffer_data_ptr(pkt, &temp);