Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-07-24 22:43:07 +0400
committerMichael Niedermayer <michaelni@gmx.at>2012-07-24 23:15:57 +0400
commit93342de1d88081822dad55af70dd4738cd15d242 (patch)
tree7dd3f6fe644743880f7be2554570bda7497688c7 /libavformat
parent3ccf22c64a0065fa08fe642500f193394fd83d01 (diff)
parent6a433fdba82ff241be2e9193f66a43689766e4d7 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: rtmp: Add credit/copyright to librtmp authors for parts of the RTMPE code rtmp: Move the CONFIG_ condition into the if conditions aac: Mention abbreviation as well in long_name build: Skip compiling rtmpdh.h if ffrtmpcrypt protocol is not enabled doc: Add Git configuration section configure: Add a dependency on https for rtmpts rtp: Only choose static payload types if the sample rate and channels are right Conflicts: doc/git-howto.texi libavformat/rtmpproto.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/Makefile1
-rw-r--r--libavformat/rtmpcrypt.c2
-rw-r--r--libavformat/rtmpdh.c2
-rw-r--r--libavformat/rtmpproto.c16
-rw-r--r--libavformat/rtp.c14
5 files changed, 23 insertions, 12 deletions
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 6a40fad3ef..985da20ef0 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -398,6 +398,7 @@ OBJS-$(CONFIG_TCP_PROTOCOL) += tcp.o
OBJS-$(CONFIG_TLS_PROTOCOL) += tls.o
OBJS-$(CONFIG_UDP_PROTOCOL) += udp.o
+SKIPHEADERS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpdh.h
SKIPHEADERS-$(CONFIG_NETWORK) += network.h rtsp.h
TESTPROGS = seek
diff --git a/libavformat/rtmpcrypt.c b/libavformat/rtmpcrypt.c
index 7dee0ad2a0..06574164fe 100644
--- a/libavformat/rtmpcrypt.c
+++ b/libavformat/rtmpcrypt.c
@@ -1,5 +1,7 @@
/*
* RTMPE network protocol
+ * Copyright (c) 2008-2009 Andrej Stepanchuk
+ * Copyright (c) 2009-2010 Howard Chu
* Copyright (c) 2012 Samuel Pitoiset
*
* This file is part of FFmpeg.
diff --git a/libavformat/rtmpdh.c b/libavformat/rtmpdh.c
index fad87fca3b..03582eafb9 100644
--- a/libavformat/rtmpdh.c
+++ b/libavformat/rtmpdh.c
@@ -1,5 +1,7 @@
/*
* RTMP Diffie-Hellmann utilities
+ * Copyright (c) 2009 Andrej Stepanchuk
+ * Copyright (c) 2009-2010 Howard Chu
* Copyright (c) 2012 Samuel Pitoiset
*
* This file is part of FFmpeg.
diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index a85ed31a5f..4ffd48eeec 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -719,7 +719,6 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
int i;
int server_pos, client_pos;
uint8_t digest[32], signature[32];
-#define encrypted (CONFIG_FFRTMPCRYPT_PROTOCOL && rt->encrypted)
int ret, type = 0;
av_log(s, AV_LOG_DEBUG, "Handshaking...\n");
@@ -729,7 +728,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
for (i = 9; i <= RTMP_HANDSHAKE_PACKET_SIZE; i++)
tosend[i] = av_lfg_get(&rnd) >> 24;
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* When the client wants to use RTMPE, we have to change the command
* byte to 0x06 which means to use encrypted data and we have to set
* the flash version to at least 9.0.115.0. */
@@ -745,7 +744,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
return ret;
}
- client_pos = rtmp_handshake_imprint_with_digest(tosend + 1, encrypted);
+ client_pos = rtmp_handshake_imprint_with_digest(tosend + 1, rt->encrypted);
if (client_pos < 0)
return client_pos;
@@ -799,7 +798,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
if (ret < 0)
return ret;
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* Compute the shared secret key sent by the server and initialize
* the RC4 encryption. */
if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1,
@@ -829,7 +828,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
if (ret < 0)
return ret;
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* Encrypt the signature to be send to the server. */
ff_rtmpe_encrypt_sig(rt->stream, tosend +
RTMP_HANDSHAKE_PACKET_SIZE - 32, digest,
@@ -841,13 +840,13 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
RTMP_HANDSHAKE_PACKET_SIZE)) < 0)
return ret;
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* Set RC4 keys for encryption and update the keystreams. */
if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0)
return ret;
}
} else {
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* Compute the shared secret key sent by the server and initialize
* the RC4 encryption. */
if ((ret = ff_rtmpe_compute_secret_key(rt->stream, serverdata + 1,
@@ -865,7 +864,7 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
RTMP_HANDSHAKE_PACKET_SIZE)) < 0)
return ret;
- if (encrypted) {
+ if (rt->encrypted && CONFIG_FFRTMPCRYPT_PROTOCOL) {
/* Set RC4 keys for encryption and update the keystreams. */
if ((ret = ff_rtmpe_update_keystream(rt->stream)) < 0)
return ret;
@@ -874,7 +873,6 @@ static int rtmp_handshake(URLContext *s, RTMPContext *rt)
return 0;
}
-#undef encrypted
/**
* Parse received packet and possibly perform some action depending on
diff --git a/libavformat/rtp.c b/libavformat/rtp.c
index a5484ae6fa..2a801625e9 100644
--- a/libavformat/rtp.c
+++ b/libavformat/rtp.c
@@ -110,9 +110,17 @@ int ff_rtp_get_payload_type(AVFormatContext *fmt, AVCodecContext *codec)
!fmt->oformat->priv_class ||
!av_opt_flag_is_set(fmt->priv_data, "rtpflags", "rfc2190")))
continue;
- if (codec->codec_id == CODEC_ID_PCM_S16BE)
- if (codec->channels != AVRtpPayloadTypes[i].audio_channels)
- continue;
+ /* G722 has 8000 as nominal rate even if the sample rate is 16000,
+ * see section 4.5.2 in RFC 3551. */
+ if (codec->codec_id == CODEC_ID_ADPCM_G722 &&
+ codec->sample_rate == 16000 && codec->channels == 1)
+ return AVRtpPayloadTypes[i].pt;
+ if (codec->codec_type == AVMEDIA_TYPE_AUDIO &&
+ ((AVRtpPayloadTypes[i].clock_rate > 0 &&
+ codec->sample_rate != AVRtpPayloadTypes[i].clock_rate) ||
+ (AVRtpPayloadTypes[i].audio_channels > 0 &&
+ codec->channels != AVRtpPayloadTypes[i].audio_channels)))
+ continue;
return AVRtpPayloadTypes[i].pt;
}