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>2015-02-15 22:49:16 +0300
committerMichael Niedermayer <michaelni@gmx.at>2015-02-15 22:49:21 +0300
commit3773b6edea6f40a4e3ee4814a88d74339da4d22b (patch)
treebff81eedb2edbdbcde55fcf77d198e81fae7d8df /libavformat
parent3171ac209b04726496a3eaa296629d40f25c2af8 (diff)
parentb8df0b71c525e9fc9fbee790d093bae3aa62035c (diff)
Merge commit 'b8df0b71c525e9fc9fbee790d093bae3aa62035c'
* commit 'b8df0b71c525e9fc9fbee790d093bae3aa62035c': rtp: h264: Move profile_level_id parsing to a function Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/rtpdec_h264.c56
1 files changed, 31 insertions, 25 deletions
diff --git a/libavformat/rtpdec_h264.c b/libavformat/rtpdec_h264.c
index 4dbbae770b..31b32126f4 100644
--- a/libavformat/rtpdec_h264.c
+++ b/libavformat/rtpdec_h264.c
@@ -64,6 +64,35 @@ struct PayloadContext {
static const uint8_t start_sequence[] = { 0, 0, 0, 1 };
+static void parse_profile_level_id(AVFormatContext *s,
+ PayloadContext *h264_data,
+ char *value)
+{
+ char buffer[3];
+ // 6 characters=3 bytes, in hex.
+ uint8_t profile_idc;
+ uint8_t profile_iop;
+ uint8_t level_idc;
+
+ buffer[0] = value[0];
+ buffer[1] = value[1];
+ buffer[2] = '\0';
+ profile_idc = strtol(buffer, NULL, 16);
+ buffer[0] = value[2];
+ buffer[1] = value[3];
+ profile_iop = strtol(buffer, NULL, 16);
+ buffer[0] = value[4];
+ buffer[1] = value[5];
+ level_idc = strtol(buffer, NULL, 16);
+
+ av_log(s, AV_LOG_DEBUG,
+ "RTP Profile IDC: %x Profile IOP: %x Level: %x\n",
+ profile_idc, profile_iop, level_idc);
+ h264_data->profile_idc = profile_idc;
+ h264_data->profile_iop = profile_iop;
+ h264_data->level_idc = level_idc;
+}
+
static int sdp_parse_fmtp_config_h264(AVFormatContext *s,
AVStream *stream,
PayloadContext *h264_data,
@@ -87,31 +116,8 @@ static int sdp_parse_fmtp_config_h264(AVFormatContext *s,
av_log(s, AV_LOG_ERROR,
"Interleaved RTP mode is not supported yet.\n");
} else if (!strcmp(attr, "profile-level-id")) {
- if (strlen(value) == 6) {
- char buffer[3];
- // 6 characters=3 bytes, in hex.
- uint8_t profile_idc;
- uint8_t profile_iop;
- uint8_t level_idc;
-
- buffer[0] = value[0];
- buffer[1] = value[1];
- buffer[2] = '\0';
- profile_idc = strtol(buffer, NULL, 16);
- buffer[0] = value[2];
- buffer[1] = value[3];
- profile_iop = strtol(buffer, NULL, 16);
- buffer[0] = value[4];
- buffer[1] = value[5];
- level_idc = strtol(buffer, NULL, 16);
-
- av_log(s, AV_LOG_DEBUG,
- "RTP Profile IDC: %x Profile IOP: %x Level: %x\n",
- profile_idc, profile_iop, level_idc);
- h264_data->profile_idc = profile_idc;
- h264_data->profile_iop = profile_iop;
- h264_data->level_idc = level_idc;
- }
+ if (strlen(value) == 6)
+ parse_profile_level_id(s, h264_data, value);
} else if (!strcmp(attr, "sprop-parameter-sets")) {
codec->extradata_size = 0;
av_freep(&codec->extradata);