ac-ffmpeg 0.18.1

Simple and safe Rust interface for FFmpeg libraries.
Documentation
#include <libavformat/avformat.h>

void ffw_stream_get_time_base(const AVStream* stream, uint32_t* num, uint32_t* den);
int64_t ffw_stream_get_start_time(const AVStream* stream);
int64_t ffw_stream_get_duration(const AVStream* stream);
int64_t ffw_stream_get_nb_frames(const AVStream* stream);
AVCodecParameters* ffw_stream_get_codec_parameters(const AVStream* stream);
int ffw_stream_set_metadata(AVStream* stream, const char* key, const char* value);

void ffw_stream_get_time_base(const AVStream* stream, uint32_t* num, uint32_t* den) {
    *num = stream->time_base.num;
    *den = stream->time_base.den;
}

void ffw_stream_set_time_base(AVStream* stream, uint32_t num, uint32_t den) {
    stream->time_base.num = num;
    stream->time_base.den = den;
}

int64_t ffw_stream_get_start_time(const AVStream* stream) {
    return stream->start_time;
}

int64_t ffw_stream_get_duration(const AVStream* stream) {
    return stream->duration;
}

int64_t ffw_stream_get_nb_frames(const AVStream* stream) {
    return stream->nb_frames;
}

int ffw_stream_get_id(const AVStream* stream) {
    return stream->id;
}

AVCodecParameters* ffw_stream_get_codec_parameters(const AVStream* stream) {
    AVCodecParameters* res = avcodec_parameters_alloc();
    if (!res) {
        return NULL;
    }

    if (avcodec_parameters_copy(res, stream->codecpar) < 0) {
        goto err;
    }

    return res;

err:
    avcodec_parameters_free(&res);

    return NULL;
}

int ffw_stream_set_metadata(AVStream* stream, const char* key, const char* value) {
    return av_dict_set(&stream->metadata, key, value, 0);
}

void ffw_stream_set_id(AVStream* stream, int id) {
    stream->id = id;
}