X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frtpdec_amr.c;h=848db9d62a23177596e7106ff85b68215472f751;hb=a2c4c30b5f6111f977c5a7284ed625b3eb8db132;hp=31acfe7edc55ee8745e71f43a6deccf57a1d71d5;hpb=0a1146a59a1c0a97e879cd2683b01db59d9a5144;p=ffmpeg diff --git a/libavformat/rtpdec_amr.c b/libavformat/rtpdec_amr.c index 31acfe7edc5..848db9d62a2 100644 --- a/libavformat/rtpdec_amr.c +++ b/libavformat/rtpdec_amr.c @@ -38,17 +38,10 @@ struct PayloadContext { int channels; }; -static PayloadContext *amr_new_context(void) +static av_cold int amr_init(AVFormatContext *s, int st_index, PayloadContext *data) { - PayloadContext *data = av_mallocz(sizeof(PayloadContext)); - if(!data) return data; data->channels = 1; - return data; -} - -static void amr_free_context(PayloadContext *data) -{ - av_free(data); + return 0; } static int amr_handle_packet(AVFormatContext *ctx, PayloadContext *data, @@ -141,7 +134,7 @@ static int amr_handle_packet(AVFormatContext *ctx, PayloadContext *data, static int amr_parse_fmtp(AVFormatContext *s, AVStream *stream, PayloadContext *data, - char *attr, char *value) + const char *attr, const char *value) { /* Some AMR SDP configurations contain "octet-align", without * the trailing =1. Therefore, if the value is empty, @@ -150,7 +143,7 @@ static int amr_parse_fmtp(AVFormatContext *s, if (!strcmp(value, "")) { av_log(s, AV_LOG_WARNING, "AMR fmtp attribute %s had " "nonstandard empty value\n", attr); - strcpy(value, "1"); + value = "1"; } if (!strcmp(attr, "octet-align")) data->octet_align = atoi(value); @@ -193,9 +186,9 @@ RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler = { .enc_name = "AMR", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_AMR_NB, + .priv_data_size = sizeof(PayloadContext), + .init = amr_init, .parse_sdp_a_line = amr_parse_sdp_line, - .alloc = amr_new_context, - .free = amr_free_context, .parse_packet = amr_handle_packet, }; @@ -203,8 +196,8 @@ RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler = { .enc_name = "AMR-WB", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_AMR_WB, + .priv_data_size = sizeof(PayloadContext), + .init = amr_init, .parse_sdp_a_line = amr_parse_sdp_line, - .alloc = amr_new_context, - .free = amr_free_context, .parse_packet = amr_handle_packet, };