Ticket #611: rtp_g726.diff

File rtp_g726.diff, 4.5 KB (added by Miroslav Slugeň, 15 years ago)

Patch for adding support of G726 decoder to RTP and RTSP streams.

  • libavformat/Makefile

    diff -Naur a/libavformat/Makefile b/libavformat/Makefile
    a b  
    247247                                            rtpdec.o      \
    248248                                            rtpdec_amr.o  \
    249249                                            rtpdec_asf.o  \
     250                                            rtpdec_g726.o \
    250251                                            rtpdec_h263.o \
    251252                                            rtpdec_h264.o \
    252253                                            rtpdec_latm.o \
  • libavformat/rtpdec.c

    diff -Naur a/libavformat/rtpdec.c b/libavformat/rtpdec.c
    a b  
    8282    ff_register_dynamic_payload_handler(&ff_qt_rtp_vid_handler);
    8383    ff_register_dynamic_payload_handler(&ff_quicktime_rtp_aud_handler);
    8484    ff_register_dynamic_payload_handler(&ff_quicktime_rtp_vid_handler);
     85
     86    ff_register_dynamic_payload_handler(&ff_g726_16_dynamic_handler);
     87    ff_register_dynamic_payload_handler(&ff_g726_24_dynamic_handler);
     88    ff_register_dynamic_payload_handler(&ff_g726_32_dynamic_handler);
     89    ff_register_dynamic_payload_handler(&ff_g726_40_dynamic_handler);
    8590}
    8691
    8792RTPDynamicProtocolHandler *ff_rtp_handler_find_by_name(const char *name,
  • libavformat/rtpdec_formats.h

    diff -Naur a/libavformat/rtpdec_formats.h b/libavformat/rtpdec_formats.h
    a b  
    3333
    3434extern RTPDynamicProtocolHandler ff_amr_nb_dynamic_handler;
    3535extern RTPDynamicProtocolHandler ff_amr_wb_dynamic_handler;
     36extern RTPDynamicProtocolHandler ff_g726_16_dynamic_handler;
     37extern RTPDynamicProtocolHandler ff_g726_24_dynamic_handler;
     38extern RTPDynamicProtocolHandler ff_g726_32_dynamic_handler;
     39extern RTPDynamicProtocolHandler ff_g726_40_dynamic_handler;
    3640extern RTPDynamicProtocolHandler ff_h263_1998_dynamic_handler;
    3741extern RTPDynamicProtocolHandler ff_h263_2000_dynamic_handler;
    3842extern RTPDynamicProtocolHandler ff_h264_dynamic_handler;
  • libavformat/rtpdec_g726.c

    diff -Naur a/libavformat/rtpdec_g726.c b/libavformat/rtpdec_g726.c
    a b  
     1
     2#include "avformat.h"
     3#include "rtpdec_formats.h"
     4
     5static int g726_16_parse_sdp_line(AVFormatContext *s, int st_index,
     6                              PayloadContext *data, const char *line)
     7{
     8    AVStream *stream = s->streams[st_index];
     9    AVCodecContext *codec = stream->codec;
     10
     11    codec->bit_rate = 16000;
     12
     13    return 0;
     14}
     15
     16static int g726_24_parse_sdp_line(AVFormatContext *s, int st_index,
     17                              PayloadContext *data, const char *line)
     18{
     19    AVStream *stream = s->streams[st_index];
     20    AVCodecContext *codec = stream->codec;
     21
     22    codec->bit_rate = 24000;
     23
     24    return 0;
     25}
     26
     27static int g726_32_parse_sdp_line(AVFormatContext *s, int st_index,
     28                              PayloadContext *data, const char *line)
     29{
     30    AVStream *stream = s->streams[st_index];
     31    AVCodecContext *codec = stream->codec;
     32
     33    codec->bit_rate = 32000;
     34
     35    return 0;
     36}
     37
     38static int g726_40_parse_sdp_line(AVFormatContext *s, int st_index,
     39                              PayloadContext *data, const char *line)
     40{
     41    AVStream *stream = s->streams[st_index];
     42    AVCodecContext *codec = stream->codec;
     43
     44    codec->bit_rate = 40000;
     45
     46    return 0;
     47}
     48
     49RTPDynamicProtocolHandler ff_g726_16_dynamic_handler = {
     50    .enc_name         = "G726-16",
     51    .codec_type       = AVMEDIA_TYPE_AUDIO,
     52    .codec_id         = CODEC_ID_ADPCM_G726,
     53    .parse_sdp_a_line = g726_16_parse_sdp_line,
     54};
     55
     56RTPDynamicProtocolHandler ff_g726_24_dynamic_handler = {
     57    .enc_name         = "G726-24",
     58    .codec_type       = AVMEDIA_TYPE_AUDIO,
     59    .codec_id         = CODEC_ID_ADPCM_G726,
     60    .parse_sdp_a_line = g726_24_parse_sdp_line,
     61};
     62
     63RTPDynamicProtocolHandler ff_g726_32_dynamic_handler = {
     64    .enc_name         = "G726-32",
     65    .codec_type       = AVMEDIA_TYPE_AUDIO,
     66    .codec_id         = CODEC_ID_ADPCM_G726,
     67    .parse_sdp_a_line = g726_32_parse_sdp_line,
     68};
     69
     70RTPDynamicProtocolHandler ff_g726_40_dynamic_handler = {
     71    .enc_name         = "G726-40",
     72    .codec_type       = AVMEDIA_TYPE_AUDIO,
     73    .codec_id         = CODEC_ID_ADPCM_G726,
     74    .parse_sdp_a_line = g726_40_parse_sdp_line,
     75};