public void SetConfiguration(VpxCodecEncoderConfiguration config) { if (config == null) { throw new ArgumentNullException(nameof(config)); } VpxMarshal.vpx_codec_enc_config_set(ctx, config.Handle); }
public void Encode(VpxImage image, int presentationTimestamp, ulong duration, VpxEncoderFlags flags, VpxDeadline deadline) { var err = VpxMarshal.vpx_codec_encode(ctx, image.Handle, presentationTimestamp, duration, flags, deadline); if (err != VpxCodecError.OK) { throw new VpxInteropException(err); } }
public void Dispose() { if (release) { release = false; if (ImageData.Handle == IntPtr.Zero) { VpxMarshal.vpx_img_free(Handle); } Marshal.FreeHGlobal(Handle.Handle); } }
public static VpxCodecEncoderConfiguration CreateDefault(VpxCodec codec) { vpx_codec_enc_cfg cfg; VpxCodecError error; error = VpxMarshal.vpx_codec_enc_config_default(codec.Handle, out cfg, 0); if (error != VpxCodecError.OK) { throw new VpxInteropException(error); } var ptr = Vpx.AllocateHGlobalPointerOfStruct(cfg); return(new VpxCodecEncoderConfiguration(ptr, true)); }
public VpxEncoder(VpxCodec codec, VpxCodecEncoderConfiguration config, VpxCodecFlags flags) { if (codec == null) { throw new ArgumentNullException(nameof(codec)); } config = config ?? VpxCodecEncoderConfiguration.CreateDefault(codec); vpx_codec_ctx enc; var error = VpxMarshal.vpx_codec_enc_init_ver(out enc, codec.Handle, config.Handle, flags, VpxMarshal.EncoderAbiVersion); if (error != VpxCodecError.OK) { throw new VpxInteropException(error); } ctx = Vpx.AllocateHGlobalPointerOfStruct(enc); }
public VpxImage(VpxImageFormat format, int width, int height, int align) { Handle = VpxMarshal.vpx_img_alloc(new Pointer <vpx_image> (IntPtr.Zero), format, (uint)width, (uint)height, (uint)align); release = true; }
public void Flip() { VpxMarshal.vpx_img_flip(Handle); }
public void SetRect(int x, int y, int width, int height) { var error = VpxMarshal.vpx_img_set_rect(Handle, (uint)x, (uint)y, (uint)width, (uint)height); }
public VpxImage(VpxImageFormat format, int width, int height, int align, Pointer <byte> imageData) { Handle = VpxMarshal.vpx_img_wrap(new Pointer <vpx_image> (IntPtr.Zero), format, (uint)width, (uint)height, (uint)align, imageData); ImageData = imageData; release = true; }
static string ToMessageAddendum(VpxCodecError error) { return(error == VpxCodecError.OK ? null : " : " + Marshal.PtrToStringAuto(VpxMarshal.vpx_codec_err_to_string(error))); }
public void SetCxDataBuffer(Pointer <VpxFixedBuffer> buffer, int padBefore, int padAfter) { VpxMarshal.vpx_codec_set_cx_data_buf(ctx, buffer, (uint)padBefore, (uint)padAfter); }
public VpxFixedBuffer GetGlobalHeaders() { var ptr = VpxMarshal.vpx_codec_get_global_headers(ctx); return((ptr.Handle == IntPtr.Zero) ? default(VpxFixedBuffer) : (VpxFixedBuffer)Marshal.PtrToStructure(VpxMarshal.vpx_codec_get_global_headers(ctx), typeof(VpxFixedBuffer))); }