#define ADIF_MAX_SIZE 40 /* Should be enough */
#define ADTS_MAX_SIZE 10 /* Should be enough */
#define LOAS_MAX_SIZE 3 /* Should be enough */
+#define RAW_MAX_SIZE 1 /* Correct framing is required */
#define ADTS_HEADERS_LENGTH 7UL /* Total byte-length of fixed and variable
headers prepended during raw to ADTS
#ifdef TIZEN_FEATURE_AACPARSE_MODIFICATION
static guint gst_aac_parse_adts_get_fast_frame_len (const guint8 * data);
-static gboolean gst_aac_parse_src_eventfunc (GstBaseParse * parse,
- GstEvent * event);
/* make full aac(adts) index table when seek */
static gboolean gst_aac_parse_adts_src_eventfunc (GstBaseParse * parse,
GstEvent * event);
parse_class->pre_push_frame =
GST_DEBUG_FUNCPTR (gst_aac_parse_pre_push_frame);
parse_class->src_event = GST_DEBUG_FUNCPTR (gst_aac_parse_src_event);
-
-//#ifdef TIZEN_FEATURE_AACPARSE_MODIFICATION // FIXME
- /* make full aac(adts) index table when seek */
-// parse_class->src_event = GST_DEBUG_FUNCPTR (gst_aac_parse_src_eventfunc);
-//#endif
}
gst_buffer_fill (codec_data_buffer, 0, codec_data, 2);
gst_caps_set_simple (src_caps, "codec_data", GST_TYPE_BUFFER,
codec_data_buffer, NULL);
+ gst_buffer_unref (codec_data_buffer);
}
} else if (aacparse->header_type == DSPAAC_HEADER_NONE) {
GST_DEBUG_OBJECT (GST_BASE_PARSE (aacparse)->srcpad,
gst_aac_parse_set_src_caps (aacparse, caps);
if (aacparse->header_type == aacparse->output_header_type)
gst_base_parse_set_passthrough (parse, TRUE);
+
+ /* input is already correctly framed */
+ gst_base_parse_set_min_frame_size (parse, RAW_MAX_SIZE);
} else {
return FALSE;
}
adts_headers[0] = 0xFFU;
adts_headers[1] = 0xF0U | (id << 3) | 0x1U;
adts_headers[2] = (profile << 6) | (sampling_frequency_index << 2) | 0x2U |
- (channel_configuration & 0x4U);
+ ((channel_configuration & 0x4U) >> 2);
adts_headers[3] = ((channel_configuration & 0x3U) << 6) | 0x30U |
(guint8) (frame_size >> 11);
adts_headers[4] = (guint8) ((frame_size >> 3) & 0x00FF);
aacparse->last_parsed_channels = 0;
aacparse->last_parsed_sample_rate = 0;
}
-
+#ifdef TIZEN_FEATURE_AACPARSE_MODIFICATION
+ GST_DEBUG ("Entering gst_aac_parse_src_event header type = %d",
+ aacparse->header_type);
+ if (aacparse->header_type == DSPAAC_HEADER_ADTS)
+ return gst_aac_parse_adts_src_eventfunc (parse, event);
+#endif
return GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event);
+
}
#ifdef TIZEN_FEATURE_AACPARSE_MODIFICATION
return length;
}
-static gboolean
-gst_aac_parse_src_eventfunc (GstBaseParse * parse, GstEvent * event)
-{
- gboolean handled = FALSE;
- GstAacParse *aacparse;
- aacparse = GST_AAC_PARSE (parse);
-
- GST_DEBUG ("Entering gst_aac_parse_src_eventfunc header type = %d",
- aacparse->header_type);
- if (aacparse->header_type == DSPAAC_HEADER_ADTS)
- return gst_aac_parse_adts_src_eventfunc (parse, event);
- else
- goto aac_seek_null_exit;
-aac_seek_null_exit:
-
- /* call baseparse src_event function to handle event */
- handled = GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event);
- return handled;
-}
-
/**
* gst_aac_parse_adts_src_eventfunc:
* @parse: #GstBaseParse. #event
handled = GST_BASE_PARSE_CLASS (parent_class)->src_event (parse, event);
return handled;
}
-#endif //end of #ifdef TIZEN_FEATURE_AACPARSE_MODIFICATION
+#endif /* TIZEN_FEATURE_AACPARSE_MODIFICATION */