104 lines
3.7 KiB
Diff
104 lines
3.7 KiB
Diff
|
diff -ru faad2-2.7.orig/plugins/mpeg4ip/faad2.cpp faad2-2.7/plugins/mpeg4ip/faad2.cpp
|
||
|
--- faad2-2.7.orig/plugins/mpeg4ip/faad2.cpp 2004-08-20 10:30:53.000000000 +0200
|
||
|
+++ faad2-2.7/plugins/mpeg4ip/faad2.cpp 2009-07-12 19:23:11.000000000 +0200
|
||
|
@@ -35,7 +35,9 @@
|
||
|
/*
|
||
|
* Create CAACodec class
|
||
|
*/
|
||
|
-static codec_data_t *aac_codec_create (const char *compressor,
|
||
|
+static codec_data_t *aac_codec_create (
|
||
|
+ const char *stream_type,
|
||
|
+ const char *compressor,
|
||
|
int type,
|
||
|
int profile,
|
||
|
format_list_t *media_fmt,
|
||
|
@@ -67,7 +69,7 @@
|
||
|
// This is not necessarilly right - it is, for the most part, but
|
||
|
// we should be reading the fmtp statement, and looking at the config.
|
||
|
// (like we do below in the userdata section...
|
||
|
- aac->m_freq = media_fmt->rtpmap->clock_rate;
|
||
|
+ aac->m_freq = media_fmt->rtpmap_clock_rate;
|
||
|
fmtp = parse_fmtp_for_mpeg4(media_fmt->fmt_param, vft->log_msg);
|
||
|
if (fmtp != NULL) {
|
||
|
userdata = fmtp->config_binary;
|
||
|
@@ -148,7 +150,7 @@
|
||
|
* Decode task call for FAAC
|
||
|
*/
|
||
|
static int aac_decode (codec_data_t *ptr,
|
||
|
- uint64_t ts,
|
||
|
+ frame_timestamp_t *ts,
|
||
|
int from_rtp,
|
||
|
int *sync_frame,
|
||
|
uint8_t *buffer,
|
||
|
@@ -163,15 +165,15 @@
|
||
|
if (aac->m_record_sync_time) {
|
||
|
aac->m_current_frame = 0;
|
||
|
aac->m_record_sync_time = 0;
|
||
|
- aac->m_current_time = ts;
|
||
|
- aac->m_last_rtp_ts = ts;
|
||
|
+ aac->m_current_time = ts->msec_timestamp;
|
||
|
+ aac->m_last_rtp_ts = ts->msec_timestamp;
|
||
|
} else {
|
||
|
- if (aac->m_last_rtp_ts == ts) {
|
||
|
+ if (aac->m_last_rtp_ts == ts->msec_timestamp) {
|
||
|
aac->m_current_time += aac->m_msec_per_frame;
|
||
|
aac->m_current_frame++;
|
||
|
} else {
|
||
|
- aac->m_last_rtp_ts = ts;
|
||
|
- aac->m_current_time = ts;
|
||
|
+ aac->m_last_rtp_ts = ts->msec_timestamp;
|
||
|
+ aac->m_current_time = ts->msec_timestamp;
|
||
|
aac->m_current_frame = 0;
|
||
|
}
|
||
|
|
||
|
@@ -239,7 +241,7 @@
|
||
|
aac->m_chans,
|
||
|
(audio_format_t)AUDIO_S16SYS,
|
||
|
aac->m_output_frame_size);
|
||
|
- uint8_t *now = aac->m_vft->audio_get_buffer(aac->m_ifptr);
|
||
|
+ uint8_t *now = aac->m_vft->audio_get_buffer(aac->m_ifptr, aac->m_freq, aac->m_current_time);
|
||
|
aac->m_audio_inited = 1;
|
||
|
}
|
||
|
/*
|
||
|
@@ -281,6 +283,7 @@
|
||
|
};
|
||
|
|
||
|
static int aac_codec_check (lib_message_func_t message,
|
||
|
+ const char *stream_time,
|
||
|
const char *compressor,
|
||
|
int type,
|
||
|
int profile,
|
||
|
@@ -307,9 +310,8 @@
|
||
|
}
|
||
|
}
|
||
|
if (fptr != NULL &&
|
||
|
- fptr->rtpmap != NULL &&
|
||
|
- fptr->rtpmap->encode_name != NULL) {
|
||
|
- if (strcasecmp(fptr->rtpmap->encode_name, "mpeg4-generic") != 0) {
|
||
|
+ fptr->rtpmap_name != NULL) {
|
||
|
+ if (strcasecmp(fptr->rtpmap_name, "mpeg4-generic") != 0) {
|
||
|
return -1;
|
||
|
}
|
||
|
if (userdata == NULL) {
|
||
|
@@ -322,7 +324,7 @@
|
||
|
}
|
||
|
if (userdata != NULL) {
|
||
|
mpeg4_audio_config_t audio_config;
|
||
|
- decode_mpeg4_audio_config(userdata, userdata_size, &audio_config);
|
||
|
+ decode_mpeg4_audio_config(userdata, userdata_size, &audio_config, false);
|
||
|
message(LOG_DEBUG, "aac", "audio type is %d", audio_config.audio_object_type);
|
||
|
if (fmtp != NULL) free_fmtp_parse(fmtp);
|
||
|
|
||
|
diff -ru faad2-2.7.orig/plugins/mpeg4ip/faad2.h faad2-2.7/plugins/mpeg4ip/faad2.h
|
||
|
--- faad2-2.7.orig/plugins/mpeg4ip/faad2.h 2004-01-05 15:05:12.000000000 +0100
|
||
|
+++ faad2-2.7/plugins/mpeg4ip/faad2.h 2009-07-12 19:26:18.000000000 +0200
|
||
|
@@ -81,7 +81,7 @@
|
||
|
|
||
|
int aac_file_next_frame(codec_data_t *ifptr,
|
||
|
uint8_t **buffer,
|
||
|
- uint64_t *ts);
|
||
|
+ frame_timestamp_t *ts);
|
||
|
int aac_file_eof(codec_data_t *ifptr);
|
||
|
|
||
|
void aac_file_used_for_frame(codec_data_t *ifptr,
|