Skip to content
Snippets Groups Projects
utils.c 130 KiB
Newer Older
  • Learn to ignore specific revisions
  •         if (ofmt->query_codec)
                return ofmt->query_codec(codec_id, std_compliance);
            else if (ofmt->codec_tag)
                return !!av_codec_get_tag(ofmt->codec_tag, codec_id);
            else if (codec_id == ofmt->video_codec || codec_id == ofmt->audio_codec ||
                     codec_id == ofmt->subtitle_codec)
    
                return 1;
    
        }
        return AVERROR_PATCHWELCOME;
    }
    
    
    int avformat_network_init(void)
    {
    #if CONFIG_NETWORK
        int ret;
    
        ff_network_inited_globally = 1;
    
        if ((ret = ff_network_init()) < 0)
            return ret;
        ff_tls_init();
    #endif
        return 0;
    }
    
    int avformat_network_deinit(void)
    {
    #if CONFIG_NETWORK
        ff_network_close();
        ff_tls_deinit();
    #endif
        return 0;
    }
    
    
    int ff_add_param_change(AVPacket *pkt, int32_t channels,
                            uint64_t channel_layout, int32_t sample_rate,
                            int32_t width, int32_t height)
    {
        uint32_t flags = 0;
        int size = 4;
        uint8_t *data;
        if (!pkt)
            return AVERROR(EINVAL);
        if (channels) {
            size += 4;
            flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT;
        }
        if (channel_layout) {
            size += 8;
            flags |= AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT;
        }
        if (sample_rate) {
            size += 4;
            flags |= AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE;
        }
        if (width || height) {
            size += 8;
            flags |= AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS;
        }
        data = av_packet_new_side_data(pkt, AV_PKT_DATA_PARAM_CHANGE, size);
        if (!data)
            return AVERROR(ENOMEM);
        bytestream_put_le32(&data, flags);
        if (channels)
            bytestream_put_le32(&data, channels);
        if (channel_layout)
            bytestream_put_le64(&data, channel_layout);
        if (sample_rate)
            bytestream_put_le32(&data, sample_rate);
        if (width || height) {
            bytestream_put_le32(&data, width);
            bytestream_put_le32(&data, height);
        }
        return 0;
    }