av_audio_decoder_info_impl(const AVCodecContext * _CodecContext)
    {
        DT_STRONG_ASSERT(NULL != _CodecContext);
        if (NULL == _CodecContext)
        {
            BOOST_THROW_EXCEPTION(errors::invalid_argument());
        }

        AVCodecContext * ctx = &m_CodecContext;

        ff_alloc_and_copy(&ctx->extradata, _CodecContext->extradata, _CodecContext->extradata_size, FF_INPUT_BUFFER_PADDING_SIZE);
        ctx->extradata_size = _CodecContext->extradata_size;
        memcpy(ctx->codec_name, _CodecContext->codec_name, sizeof(_CodecContext->codec_name));
        ctx->codec_type = _CodecContext->codec_type;
        ctx->codec_id = _CodecContext->codec_id;
        ctx->codec_tag = _CodecContext->codec_tag;
        ctx->profile = _CodecContext->profile;
        ctx->level = _CodecContext->level;
        ctx->bit_rate = _CodecContext->bit_rate;
        ctx->time_base = _CodecContext->time_base;
        ctx->rc_max_rate = _CodecContext->rc_max_rate;
        ctx->rc_buffer_size = _CodecContext->rc_buffer_size;

        ctx->sample_rate = _CodecContext->sample_rate;
        ctx->channels = _CodecContext->channels;
        ctx->sample_fmt = _CodecContext->sample_fmt;
        ctx->block_align = _CodecContext->block_align;
        ctx->channel_layout = _CodecContext->channel_layout;
        ctx->bits_per_coded_sample = _CodecContext->bits_per_coded_sample;
        ctx->bits_per_raw_sample = _CodecContext->bits_per_raw_sample;
    }
void audio_data::reset_impl(audio_data::Impl * _Impl)
{
	DT_STRONG_ASSERT(NULL != _Impl);
	delete m_pImpl;
	m_pImpl = _Impl;
}
media_packet::media_packet(media_packet::Impl * _Impl) : m_pImpl(_Impl)
{
    DT_STRONG_ASSERT(NULL != _Impl);
}
audio_encoder::audio_encoder(audio_encoder::Impl * _Impl) : m_pImpl( _Impl )
{
    DT_STRONG_ASSERT(NULL != _Impl);    
}
int ff_video_data_impl::get_line_size(size_t _PlaneIndex) const
{
    DT_STRONG_ASSERT(_PlaneIndex < AV_NUM_DATA_POINTERS);
    return m_AVFrame->linesize[_PlaneIndex];
}
uint8_t * ff_video_data_impl::get_plane(size_t _PlaneIndex) const
{
    DT_STRONG_ASSERT(_PlaneIndex < AV_NUM_DATA_POINTERS);
    return m_AVFrame->data[_PlaneIndex];
}
audio_encoder_settings::audio_encoder_settings(Impl * _Impl) : m_pImpl(_Impl)
{
    DT_STRONG_ASSERT(NULL != _Impl);
}
codec_extra_data::codec_extra_data(codec_extra_data::Impl * _Impl) : m_pImpl(_Impl)
{    
    DT_STRONG_ASSERT(NULL != _Impl);
}
media_file_info::media_file_info( media_file_info::Impl * _Impl ) : m_pImpl(_Impl)
{
    DT_STRONG_ASSERT(NULL != _Impl);
}