ReactOS 0.4.16-dev-1067-ge98bba2
encoder.c File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "objbase.h"
#include "wincodecs_private.h"
#include "wine/debug.h"
Include dependency graph for encoder.c:

Go to the source code of this file.

Classes

struct  CommonEncoder
 
struct  CommonEncoderFrame
 

Macros

#define COBJMACROS
 

Typedefs

typedef struct CommonEncoder CommonEncoder
 
typedef struct CommonEncoderFrame CommonEncoderFrame
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wincodecs)
 
static CommonEncoderimpl_from_IWICBitmapEncoder (IWICBitmapEncoder *iface)
 
static CommonEncoderFrameimpl_from_IWICBitmapFrameEncode (IWICBitmapFrameEncode *iface)
 
static CommonEncoderFrameimpl_from_IWICMetadataBlockWriter (IWICMetadataBlockWriter *iface)
 
static HRESULT WINAPI CommonEncoderFrame_QueryInterface (IWICBitmapFrameEncode *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI CommonEncoderFrame_AddRef (IWICBitmapFrameEncode *iface)
 
static ULONG WINAPI CommonEncoderFrame_Release (IWICBitmapFrameEncode *iface)
 
static HRESULT WINAPI CommonEncoderFrame_Initialize (IWICBitmapFrameEncode *iface, IPropertyBag2 *pIEncoderOptions)
 
static HRESULT WINAPI CommonEncoderFrame_SetSize (IWICBitmapFrameEncode *iface, UINT uiWidth, UINT uiHeight)
 
static HRESULT WINAPI CommonEncoderFrame_SetResolution (IWICBitmapFrameEncode *iface, double dpiX, double dpiY)
 
static HRESULT WINAPI CommonEncoderFrame_SetPixelFormat (IWICBitmapFrameEncode *iface, WICPixelFormatGUID *pPixelFormat)
 
static HRESULT WINAPI CommonEncoderFrame_SetColorContexts (IWICBitmapFrameEncode *iface, UINT cCount, IWICColorContext **ppIColorContext)
 
static HRESULT WINAPI CommonEncoderFrame_SetPalette (IWICBitmapFrameEncode *iface, IWICPalette *palette)
 
static HRESULT WINAPI CommonEncoderFrame_SetThumbnail (IWICBitmapFrameEncode *iface, IWICBitmapSource *pIThumbnail)
 
static HRESULT WINAPI CommonEncoderFrame_WritePixels (IWICBitmapFrameEncode *iface, UINT lineCount, UINT cbStride, UINT cbBufferSize, BYTE *pbPixels)
 
static HRESULT WINAPI CommonEncoderFrame_WriteSource (IWICBitmapFrameEncode *iface, IWICBitmapSource *pIBitmapSource, WICRect *prc)
 
static HRESULT WINAPI CommonEncoderFrame_Commit (IWICBitmapFrameEncode *iface)
 
static HRESULT WINAPI CommonEncoderFrame_GetMetadataQueryWriter (IWICBitmapFrameEncode *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
 
static HRESULT WINAPI CommonEncoder_QueryInterface (IWICBitmapEncoder *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI CommonEncoder_AddRef (IWICBitmapEncoder *iface)
 
static ULONG WINAPI CommonEncoder_Release (IWICBitmapEncoder *iface)
 
static HRESULT WINAPI CommonEncoder_Initialize (IWICBitmapEncoder *iface, IStream *pIStream, WICBitmapEncoderCacheOption cacheOption)
 
static HRESULT WINAPI CommonEncoder_GetContainerFormat (IWICBitmapEncoder *iface, GUID *format)
 
static HRESULT WINAPI CommonEncoder_GetEncoderInfo (IWICBitmapEncoder *iface, IWICBitmapEncoderInfo **info)
 
static HRESULT WINAPI CommonEncoder_SetColorContexts (IWICBitmapEncoder *iface, UINT cCount, IWICColorContext **ppIColorContext)
 
static HRESULT WINAPI CommonEncoder_SetPalette (IWICBitmapEncoder *iface, IWICPalette *palette)
 
static HRESULT WINAPI CommonEncoder_SetThumbnail (IWICBitmapEncoder *iface, IWICBitmapSource *pIThumbnail)
 
static HRESULT WINAPI CommonEncoder_SetPreview (IWICBitmapEncoder *iface, IWICBitmapSource *pIPreview)
 
static HRESULT WINAPI CommonEncoderFrame_Block_QueryInterface (IWICMetadataBlockWriter *iface, REFIID iid, void **ppv)
 
static ULONG WINAPI CommonEncoderFrame_Block_AddRef (IWICMetadataBlockWriter *iface)
 
static ULONG WINAPI CommonEncoderFrame_Block_Release (IWICMetadataBlockWriter *iface)
 
static HRESULT WINAPI CommonEncoderFrame_Block_GetContainerFormat (IWICMetadataBlockWriter *iface, GUID *container_format)
 
static HRESULT WINAPI CommonEncoderFrame_Block_GetCount (IWICMetadataBlockWriter *iface, UINT *count)
 
static HRESULT WINAPI CommonEncoderFrame_Block_GetReaderByIndex (IWICMetadataBlockWriter *iface, UINT index, IWICMetadataReader **metadata_reader)
 
static HRESULT WINAPI CommonEncoderFrame_Block_GetEnumerator (IWICMetadataBlockWriter *iface, IEnumUnknown **enum_metadata)
 
static HRESULT WINAPI CommonEncoderFrame_Block_InitializeFromBlockReader (IWICMetadataBlockWriter *iface, IWICMetadataBlockReader *metadata_block_reader)
 
static HRESULT WINAPI CommonEncoderFrame_Block_GetWriterByIndex (IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter **metadata_writer)
 
static HRESULT WINAPI CommonEncoderFrame_Block_AddWriter (IWICMetadataBlockWriter *iface, IWICMetadataWriter *metadata_writer)
 
static HRESULT WINAPI CommonEncoderFrame_Block_SetWriterByIndex (IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter *metadata_writer)
 
static HRESULT WINAPI CommonEncoderFrame_Block_RemoveWriterByIndex (IWICMetadataBlockWriter *iface, UINT index)
 
static HRESULT WINAPI CommonEncoder_CreateNewFrame (IWICBitmapEncoder *iface, IWICBitmapFrameEncode **ppIFrameEncode, IPropertyBag2 **ppIEncoderOptions)
 
static HRESULT WINAPI CommonEncoder_Commit (IWICBitmapEncoder *iface)
 
static HRESULT WINAPI CommonEncoder_GetMetadataQueryWriter (IWICBitmapEncoder *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
 
HRESULT CommonEncoder_CreateInstance (struct encoder *encoder, const struct encoder_info *encoder_info, REFIID iid, void **ppv)
 

Variables

static const PROPBAG2 encoder_option_properties [ENCODER_OPTION_END]
 
static const IWICBitmapFrameEncodeVtbl CommonEncoderFrame_Vtbl
 
static const IWICMetadataBlockWriterVtbl CommonEncoderFrame_BlockVtbl
 
static const IWICBitmapEncoderVtbl CommonEncoder_Vtbl
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 21 of file encoder.c.

Typedef Documentation

◆ CommonEncoder

◆ CommonEncoderFrame

Function Documentation

◆ CommonEncoder_AddRef()

static ULONG WINAPI CommonEncoder_AddRef ( IWICBitmapEncoder iface)
static

Definition at line 525 of file encoder.c.

526{
529
530 TRACE("(%p) refcount=%lu\n", iface, ref);
531
532 return ref;
533}
#define InterlockedIncrement
Definition: armddk.h:53
static CommonEncoder * impl_from_IWICBitmapEncoder(IWICBitmapEncoder *iface)
Definition: encoder.c:70
#define TRACE(s)
Definition: solgame.cpp:4
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

◆ CommonEncoder_Commit()

static HRESULT WINAPI CommonEncoder_Commit ( IWICBitmapEncoder iface)
static

Definition at line 821 of file encoder.c.

822{
824 HRESULT hr;
825
826 TRACE("(%p)\n", iface);
827
829
830 if (This->committed || This->uncommitted_frame)
832 else
833 {
834 hr = encoder_commit_file(This->encoder);
835 if (SUCCEEDED(hr))
836 This->committed = TRUE;
837 }
838
840
841 return hr;
842}
#define TRUE
Definition: types.h:120
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hr
Definition: shlfolder.c:183
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
HRESULT CDECL encoder_commit_file(struct encoder *encoder)
#define WINCODEC_ERR_WRONGSTATE
Definition: winerror.h:3281

◆ CommonEncoder_CreateInstance()

HRESULT CommonEncoder_CreateInstance ( struct encoder encoder,
const struct encoder_info encoder_info,
REFIID  iid,
void **  ppv 
)

Definition at line 867 of file encoder.c.

869{
871 HRESULT ret;
872
873 TRACE("(%s,%p)\n", debugstr_guid(iid), ppv);
874
875 *ppv = NULL;
876
877 This = malloc(sizeof(CommonEncoder));
878 if (!This)
879 {
881 return E_OUTOFMEMORY;
882 }
883
884 This->IWICBitmapEncoder_iface.lpVtbl = &CommonEncoder_Vtbl;
885 This->ref = 1;
886 This->stream = NULL;
887 This->encoder = encoder;
888 This->encoder_info = *encoder_info;
889 This->frame_count = 0;
890 This->uncommitted_frame = FALSE;
891 This->committed = FALSE;
892#ifdef __REACTOS__
894#else
896#endif
897 This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": CommonEncoder.lock");
898
899 ret = IWICBitmapEncoder_QueryInterface(&This->IWICBitmapEncoder_iface, iid, ppv);
900 IWICBitmapEncoder_Release(&This->IWICBitmapEncoder_iface);
901
902 return ret;
903}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define malloc
Definition: debug_ros.c:4
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
BOOL WINAPI InitializeCriticalSectionEx(OUT LPCRITICAL_SECTION lpCriticalSection, IN DWORD dwSpinCount, IN DWORD flags)
Definition: sync.c:107
static const IWICBitmapEncoderVtbl CommonEncoder_Vtbl
Definition: encoder.c:851
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define debugstr_guid
Definition: kernel32.h:35
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751
#define DWORD_PTR
Definition: treelist.c:76
int ret
void CDECL encoder_destroy(struct encoder *encoder)
#define RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
Definition: winnt_old.h:1116

Referenced by JpegEncoder_CreateInstance(), PngEncoder_CreateInstance(), and TiffEncoder_CreateInstance().

◆ CommonEncoder_CreateNewFrame()

static HRESULT WINAPI CommonEncoder_CreateNewFrame ( IWICBitmapEncoder iface,
IWICBitmapFrameEncode **  ppIFrameEncode,
IPropertyBag2 **  ppIEncoderOptions 
)
static

Definition at line 757 of file encoder.c.

759{
762 HRESULT hr;
763 DWORD opts_length;
764 PROPBAG2 opts[6];
765
766 TRACE("(%p,%p,%p)\n", iface, ppIFrameEncode, ppIEncoderOptions);
767
769
770 if (This->frame_count != 0 && !(This->encoder_info.flags & ENCODER_FLAGS_MULTI_FRAME))
771 {
774 }
775
776 if (!This->stream || This->committed || This->uncommitted_frame)
777 {
780 }
781
782 result = calloc(1, sizeof(*result));
783 if (!result)
784 {
786 return E_OUTOFMEMORY;
787 }
788
789 result->IWICBitmapFrameEncode_iface.lpVtbl = &CommonEncoderFrame_Vtbl;
790 result->IWICMetadataBlockWriter_iface.lpVtbl = &CommonEncoderFrame_BlockVtbl;
791 result->ref = 1;
792 result->parent = This;
793
794 if (ppIEncoderOptions)
795 {
796 for (opts_length = 0; This->encoder_info.encoder_options[opts_length] < ENCODER_OPTION_END; opts_length++)
797 {
798 opts[opts_length] = encoder_option_properties[This->encoder_info.encoder_options[opts_length]];
799 }
800
801 hr = CreatePropertyBag2(opts, opts_length, ppIEncoderOptions);
802 if (FAILED(hr))
803 {
805 free(result);
806 return hr;
807 }
808 }
809
810 IWICBitmapEncoder_AddRef(iface);
811 This->frame_count++;
812 This->uncommitted_frame = TRUE;
813
815
816 *ppIFrameEncode = &result->IWICBitmapFrameEncode_iface;
817
818 return S_OK;
819}
#define free
Definition: debug_ros.c:5
HRESULT CreatePropertyBag2(const PROPBAG2 *options, UINT count, IPropertyBag2 **ppPropertyBag2)
Definition: propertybag.c:278
static const IWICMetadataBlockWriterVtbl CommonEncoderFrame_BlockVtbl
Definition: encoder.c:741
static const PROPBAG2 encoder_option_properties[ENCODER_OPTION_END]
Definition: encoder.c:33
static const IWICBitmapFrameEncodeVtbl CommonEncoderFrame_Vtbl
Definition: encoder.c:485
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint64EXT * result
Definition: glext.h:11304
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
#define calloc
Definition: rosglue.h:14
#define ENCODER_FLAGS_MULTI_FRAME
@ ENCODER_OPTION_END
#define WINCODEC_ERR_UNSUPPORTEDOPERATION
Definition: winerror.h:3308
#define WINCODEC_ERR_NOTINITIALIZED
Definition: winerror.h:3285

◆ CommonEncoder_GetContainerFormat()

static HRESULT WINAPI CommonEncoder_GetContainerFormat ( IWICBitmapEncoder iface,
GUID format 
)
static

Definition at line 587 of file encoder.c.

588{
590 TRACE("(%p,%p)\n", iface, format);
591
592 if (!format)
593 return E_INVALIDARG;
594
595 memcpy(format, &This->encoder_info.container_format, sizeof(*format));
596 return S_OK;
597}
#define E_INVALIDARG
Definition: ddrawi.h:101
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
Definition: format.c:58

◆ CommonEncoder_GetEncoderInfo()

static HRESULT WINAPI CommonEncoder_GetEncoderInfo ( IWICBitmapEncoder iface,
IWICBitmapEncoderInfo **  info 
)
static

Definition at line 599 of file encoder.c.

600{
602 IWICComponentInfo *comp_info;
603 HRESULT hr;
604
605 TRACE("%p,%p\n", iface, info);
606
607 if (!info) return E_INVALIDARG;
608
609 hr = CreateComponentInfo(&This->encoder_info.clsid, &comp_info);
610 if (hr == S_OK)
611 {
612 hr = IWICComponentInfo_QueryInterface(comp_info, &IID_IWICBitmapEncoderInfo, (void **)info);
613 IWICComponentInfo_Release(comp_info);
614 }
615 return hr;
616}
HRESULT CreateComponentInfo(REFCLSID clsid, IWICComponentInfo **ppIInfo)
Definition: info.c:2030

◆ CommonEncoder_GetMetadataQueryWriter()

static HRESULT WINAPI CommonEncoder_GetMetadataQueryWriter ( IWICBitmapEncoder iface,
IWICMetadataQueryWriter **  ppIMetadataQueryWriter 
)
static

Definition at line 844 of file encoder.c.

846{
847 FIXME("(%p,%p): stub\n", iface, ppIMetadataQueryWriter);
848 return E_NOTIMPL;
849}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99

◆ CommonEncoder_Initialize()

static HRESULT WINAPI CommonEncoder_Initialize ( IWICBitmapEncoder iface,
IStream pIStream,
WICBitmapEncoderCacheOption  cacheOption 
)
static

Definition at line 555 of file encoder.c.

557{
559 HRESULT hr;
560
561 TRACE("(%p,%p,%u)\n", iface, pIStream, cacheOption);
562
563 if (!pIStream)
564 return E_POINTER;
565
567
568 if (This->stream)
569 {
572 }
573
574 hr = encoder_initialize(This->encoder, pIStream);
575
576 if (SUCCEEDED(hr))
577 {
578 This->stream = pIStream;
579 IStream_AddRef(This->stream);
580 }
581
583
584 return S_OK;
585}
HRESULT CDECL encoder_initialize(struct encoder *encoder, IStream *stream)
#define E_POINTER
Definition: winerror.h:2365

◆ CommonEncoder_QueryInterface()

static HRESULT WINAPI CommonEncoder_QueryInterface ( IWICBitmapEncoder iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 502 of file encoder.c.

504{
506 TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
507
508 if (!ppv) return E_INVALIDARG;
509
510 if (IsEqualIID(&IID_IUnknown, iid) ||
511 IsEqualIID(&IID_IWICBitmapEncoder, iid))
512 {
513 *ppv = &This->IWICBitmapEncoder_iface;
514 }
515 else
516 {
517 *ppv = NULL;
518 return E_NOINTERFACE;
519 }
520
521 IUnknown_AddRef((IUnknown*)*ppv);
522 return S_OK;
523}
const GUID IID_IUnknown
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
#define E_NOINTERFACE
Definition: winerror.h:2364

◆ CommonEncoder_Release()

static ULONG WINAPI CommonEncoder_Release ( IWICBitmapEncoder iface)
static

Definition at line 535 of file encoder.c.

536{
539
540 TRACE("(%p) refcount=%lu\n", iface, ref);
541
542 if (ref == 0)
543 {
544 This->lock.DebugInfo->Spare[0] = 0;
546 if (This->stream)
547 IStream_Release(This->stream);
548 encoder_destroy(This->encoder);
549 free(This);
550 }
551
552 return ref;
553}
#define InterlockedDecrement
Definition: armddk.h:52
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)

◆ CommonEncoder_SetColorContexts()

static HRESULT WINAPI CommonEncoder_SetColorContexts ( IWICBitmapEncoder iface,
UINT  cCount,
IWICColorContext **  ppIColorContext 
)
static

Definition at line 618 of file encoder.c.

620{
621 FIXME("(%p,%u,%p): stub\n", iface, cCount, ppIColorContext);
622 return E_NOTIMPL;
623}

◆ CommonEncoder_SetPalette()

static HRESULT WINAPI CommonEncoder_SetPalette ( IWICBitmapEncoder iface,
IWICPalette palette 
)
static

Definition at line 625 of file encoder.c.

626{
628 HRESULT hr;
629
630 TRACE("(%p,%p)\n", iface, palette);
631
633
635
637
638 return hr;
639}
static HPALETTE palette
Definition: clipboard.c:1345

◆ CommonEncoder_SetPreview()

static HRESULT WINAPI CommonEncoder_SetPreview ( IWICBitmapEncoder iface,
IWICBitmapSource pIPreview 
)
static

Definition at line 647 of file encoder.c.

648{
649 TRACE("(%p,%p)\n", iface, pIPreview);
651}

◆ CommonEncoder_SetThumbnail()

static HRESULT WINAPI CommonEncoder_SetThumbnail ( IWICBitmapEncoder iface,
IWICBitmapSource pIThumbnail 
)
static

Definition at line 641 of file encoder.c.

642{
643 TRACE("(%p,%p)\n", iface, pIThumbnail);
645}

◆ CommonEncoderFrame_AddRef()

static ULONG WINAPI CommonEncoderFrame_AddRef ( IWICBitmapFrameEncode iface)
static

Definition at line 113 of file encoder.c.

114{
117
118 TRACE("(%p) refcount=%lu\n", iface, ref);
119
120 return ref;
121}
static CommonEncoderFrame * impl_from_IWICBitmapFrameEncode(IWICBitmapFrameEncode *iface)
Definition: encoder.c:75

◆ CommonEncoderFrame_Block_AddRef()

static ULONG WINAPI CommonEncoderFrame_Block_AddRef ( IWICMetadataBlockWriter iface)
static

Definition at line 660 of file encoder.c.

661{
663
664 return IWICBitmapFrameEncode_AddRef(&encoder->IWICBitmapFrameEncode_iface);
665}
static CommonEncoderFrame * impl_from_IWICMetadataBlockWriter(IWICMetadataBlockWriter *iface)
Definition: encoder.c:80

◆ CommonEncoderFrame_Block_AddWriter()

static HRESULT WINAPI CommonEncoderFrame_Block_AddWriter ( IWICMetadataBlockWriter iface,
IWICMetadataWriter metadata_writer 
)
static

Definition at line 719 of file encoder.c.

720{
721 FIXME("iface %p, metadata_writer %p.\n", iface, metadata_writer);
722
723 return E_NOTIMPL;
724}

◆ CommonEncoderFrame_Block_GetContainerFormat()

static HRESULT WINAPI CommonEncoderFrame_Block_GetContainerFormat ( IWICMetadataBlockWriter iface,
GUID container_format 
)
static

Definition at line 674 of file encoder.c.

675{
676 FIXME("iface %p, container_format %p stub.\n", iface, container_format);
677
678 return E_NOTIMPL;
679}

◆ CommonEncoderFrame_Block_GetCount()

static HRESULT WINAPI CommonEncoderFrame_Block_GetCount ( IWICMetadataBlockWriter iface,
UINT count 
)
static

Definition at line 681 of file encoder.c.

682{
683 FIXME("iface %p, count %p stub.\n", iface, count);
684
685 return E_NOTIMPL;
686}
GLuint GLuint GLsizei count
Definition: gl.h:1545

◆ CommonEncoderFrame_Block_GetEnumerator()

static HRESULT WINAPI CommonEncoderFrame_Block_GetEnumerator ( IWICMetadataBlockWriter iface,
IEnumUnknown **  enum_metadata 
)
static

Definition at line 696 of file encoder.c.

697{
698 FIXME("iface %p, ppIEnumMetadata %p stub.\n", iface, enum_metadata);
699
700 return E_NOTIMPL;
701}

◆ CommonEncoderFrame_Block_GetReaderByIndex()

static HRESULT WINAPI CommonEncoderFrame_Block_GetReaderByIndex ( IWICMetadataBlockWriter iface,
UINT  index,
IWICMetadataReader **  metadata_reader 
)
static

Definition at line 688 of file encoder.c.

690{
691 FIXME("iface %p, index %d, metadata_reader %p stub.\n", iface, index, metadata_reader);
692
693 return E_NOTIMPL;
694}
GLuint index
Definition: glext.h:6031

◆ CommonEncoderFrame_Block_GetWriterByIndex()

static HRESULT WINAPI CommonEncoderFrame_Block_GetWriterByIndex ( IWICMetadataBlockWriter iface,
UINT  index,
IWICMetadataWriter **  metadata_writer 
)
static

Definition at line 711 of file encoder.c.

713{
714 FIXME("iface %p, index %u, metadata_writer %p stub.\n", iface, index, metadata_writer);
715
716 return E_NOTIMPL;
717}

◆ CommonEncoderFrame_Block_InitializeFromBlockReader()

static HRESULT WINAPI CommonEncoderFrame_Block_InitializeFromBlockReader ( IWICMetadataBlockWriter iface,
IWICMetadataBlockReader metadata_block_reader 
)
static

Definition at line 703 of file encoder.c.

705{
706 FIXME("iface %p, metadata_block_reader %p stub.\n", iface, metadata_block_reader);
707
708 return E_NOTIMPL;
709}

◆ CommonEncoderFrame_Block_QueryInterface()

static HRESULT WINAPI CommonEncoderFrame_Block_QueryInterface ( IWICMetadataBlockWriter iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 653 of file encoder.c.

654{
656
657 return IWICBitmapFrameEncode_QueryInterface(&encoder->IWICBitmapFrameEncode_iface, iid, ppv);
658}

◆ CommonEncoderFrame_Block_Release()

static ULONG WINAPI CommonEncoderFrame_Block_Release ( IWICMetadataBlockWriter iface)
static

Definition at line 667 of file encoder.c.

668{
670
671 return IWICBitmapFrameEncode_Release(&encoder->IWICBitmapFrameEncode_iface);
672}

◆ CommonEncoderFrame_Block_RemoveWriterByIndex()

static HRESULT WINAPI CommonEncoderFrame_Block_RemoveWriterByIndex ( IWICMetadataBlockWriter iface,
UINT  index 
)
static

Definition at line 734 of file encoder.c.

735{
736 FIXME("iface %p, index %u.\n", iface, index);
737
738 return E_NOTIMPL;
739}

◆ CommonEncoderFrame_Block_SetWriterByIndex()

static HRESULT WINAPI CommonEncoderFrame_Block_SetWriterByIndex ( IWICMetadataBlockWriter iface,
UINT  index,
IWICMetadataWriter metadata_writer 
)
static

Definition at line 726 of file encoder.c.

728{
729 FIXME("iface %p, index %u, metadata_writer %p stub.\n", iface, index, metadata_writer);
730
731 return E_NOTIMPL;
732}

◆ CommonEncoderFrame_Commit()

static HRESULT WINAPI CommonEncoderFrame_Commit ( IWICBitmapFrameEncode iface)
static

Definition at line 437 of file encoder.c.

438{
440 HRESULT hr;
441
442 TRACE("(%p)\n", iface);
443
444 EnterCriticalSection(&This->parent->lock);
445
446 if (!This->frame_created || This->lines_written != This->encoder_frame.height ||
447 This->committed)
448 {
450 }
451 else
452 {
453 hr = encoder_commit_frame(This->parent->encoder);
454 if (SUCCEEDED(hr))
455 {
456 This->committed = TRUE;
457 This->parent->uncommitted_frame = FALSE;
458 }
459 }
460
461 LeaveCriticalSection(&This->parent->lock);
462
463 return hr;
464}
HRESULT CDECL encoder_commit_frame(struct encoder *encoder)

◆ CommonEncoderFrame_GetMetadataQueryWriter()

static HRESULT WINAPI CommonEncoderFrame_GetMetadataQueryWriter ( IWICBitmapFrameEncode iface,
IWICMetadataQueryWriter **  ppIMetadataQueryWriter 
)
static

Definition at line 466 of file encoder.c.

468{
470
471 TRACE("iface, %p, ppIMetadataQueryWriter %p.\n", iface, ppIMetadataQueryWriter);
472
473 if (!ppIMetadataQueryWriter)
474 return E_INVALIDARG;
475
476 if (!encoder->initialized)
478
479 if (!(encoder->parent->encoder_info.flags & ENCODER_FLAGS_SUPPORTS_METADATA))
481
482 return MetadataQueryWriter_CreateInstance(&encoder->IWICMetadataBlockWriter_iface, NULL, ppIMetadataQueryWriter);
483}
HRESULT MetadataQueryWriter_CreateInstance(IWICMetadataBlockWriter *mbw, const WCHAR *root, IWICMetadataQueryWriter **out)
#define ENCODER_FLAGS_SUPPORTS_METADATA

◆ CommonEncoderFrame_Initialize()

static HRESULT WINAPI CommonEncoderFrame_Initialize ( IWICBitmapFrameEncode iface,
IPropertyBag2 pIEncoderOptions 
)
static

Definition at line 139 of file encoder.c.

141{
144 struct encoder_frame options = {{0}};
145 PROPBAG2 opts[7]= {{0}};
146 VARIANT opt_values[7];
147 HRESULT opt_hres[7];
148 DWORD num_opts, i;
149
150 TRACE("(%p,%p)\n", iface, pIEncoderOptions);
151
152 if (pIEncoderOptions)
153 {
154 for (i=0; This->parent->encoder_info.encoder_options[i] != ENCODER_OPTION_END; i++)
155 opts[i] = encoder_option_properties[This->parent->encoder_info.encoder_options[i]];
156 num_opts = i;
157
158 hr = IPropertyBag2_Read(pIEncoderOptions, num_opts, opts, NULL, opt_values, opt_hres);
159
160 if (FAILED(hr))
161 return hr;
162
163 for (i=0; This->parent->encoder_info.encoder_options[i] != ENCODER_OPTION_END; i++)
164 {
165 VARIANT *val = &opt_values[i];
166
167 switch (This->parent->encoder_info.encoder_options[i])
168 {
170 if (V_VT(val) == VT_EMPTY)
171 options.interlace = FALSE;
172 else
173 options.interlace = (V_BOOL(val) != 0);
174 break;
176 options.filter = V_UI1(val);
177 if (options.filter > WICPngFilterAdaptive)
178 {
179 WARN("Unrecognized filter option value %lu.\n", options.filter);
181 }
182 break;
183 default:
184 break;
185 }
186 }
187 }
188 else
189 {
190 options.interlace = FALSE;
192 }
193
194 EnterCriticalSection(&This->parent->lock);
195
196 if (This->initialized)
198 else
199 {
200 This->encoder_frame = options;
201 This->initialized = TRUE;
202 }
203
204 LeaveCriticalSection(&This->parent->lock);
205
206 return hr;
207}
#define WARN(fmt,...)
Definition: precomp.h:61
@ VT_EMPTY
Definition: compat.h:2295
GLuint GLfloat * val
Definition: glext.h:7180
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define V_UI1(A)
Definition: oleauto.h:266
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_VT(A)
Definition: oleauto.h:211
@ WICPngFilterAdaptive
Definition: wincodec.idl:187
@ WICPngFilterUnspecified
Definition: wincodec.idl:181
@ ENCODER_OPTION_INTERLACE
@ ENCODER_OPTION_FILTER

◆ CommonEncoderFrame_QueryInterface()

static HRESULT WINAPI CommonEncoderFrame_QueryInterface ( IWICBitmapFrameEncode iface,
REFIID  iid,
void **  ppv 
)
static

Definition at line 85 of file encoder.c.

87{
89 TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv);
90
91 if (!ppv) return E_INVALIDARG;
92
93 if (IsEqualIID(&IID_IUnknown, iid) ||
94 IsEqualIID(&IID_IWICBitmapFrameEncode, iid))
95 {
96 *ppv = &object->IWICBitmapFrameEncode_iface;
97 }
98 else if (object->parent->encoder_info.flags & ENCODER_FLAGS_SUPPORTS_METADATA
99 && IsEqualIID(&IID_IWICMetadataBlockWriter, iid))
100 {
101 *ppv = &object->IWICMetadataBlockWriter_iface;
102 }
103 else
104 {
105 *ppv = NULL;
106 return E_NOINTERFACE;
107 }
108
109 IUnknown_AddRef((IUnknown*)*ppv);
110 return S_OK;
111}

◆ CommonEncoderFrame_Release()

static ULONG WINAPI CommonEncoderFrame_Release ( IWICBitmapFrameEncode iface)
static

Definition at line 123 of file encoder.c.

124{
127
128 TRACE("(%p) refcount=%lu\n", iface, ref);
129
130 if (ref == 0)
131 {
132 IWICBitmapEncoder_Release(&This->parent->IWICBitmapEncoder_iface);
133 free(This);
134 }
135
136 return ref;
137}

◆ CommonEncoderFrame_SetColorContexts()

static HRESULT WINAPI CommonEncoderFrame_SetColorContexts ( IWICBitmapFrameEncode iface,
UINT  cCount,
IWICColorContext **  ppIColorContext 
)
static

Definition at line 324 of file encoder.c.

326{
327 FIXME("(%p,%u,%p): stub\n", iface, cCount, ppIColorContext);
328 return E_NOTIMPL;
329}

◆ CommonEncoderFrame_SetPalette()

static HRESULT WINAPI CommonEncoderFrame_SetPalette ( IWICBitmapFrameEncode iface,
IWICPalette palette 
)
static

Definition at line 331 of file encoder.c.

333{
335 HRESULT hr;
336
337 TRACE("(%p,%p)\n", iface, palette);
338
339 if (!palette)
340 return E_INVALIDARG;
341
342 EnterCriticalSection(&This->parent->lock);
343
344 if (!This->initialized)
346 else if (This->frame_created)
348 else
349 hr = IWICPalette_GetColors(palette, 256, This->encoder_frame.palette,
350 &This->encoder_frame.num_colors);
351
352 LeaveCriticalSection(&This->parent->lock);
353
354 return hr;
355}

◆ CommonEncoderFrame_SetPixelFormat()

static HRESULT WINAPI CommonEncoderFrame_SetPixelFormat ( IWICBitmapFrameEncode iface,
WICPixelFormatGUID pPixelFormat 
)
static

Definition at line 287 of file encoder.c.

289{
291 HRESULT hr;
293 DWORD bpp;
294 BOOL indexed;
295
296 TRACE("(%p,%s)\n", iface, debugstr_guid(pPixelFormat));
297
298 EnterCriticalSection(&This->parent->lock);
299
300 if (!This->initialized || This->frame_created)
301 {
303 }
304 else
305 {
306 pixel_format = *pPixelFormat;
307 hr = encoder_get_supported_format(This->parent->encoder, &pixel_format, &bpp, &indexed);
308 }
309
310 if (SUCCEEDED(hr))
311 {
312 TRACE("<-- %s bpp=%li indexed=%i\n", wine_dbgstr_guid(&pixel_format), bpp, indexed);
313 *pPixelFormat = pixel_format;
314 This->encoder_frame.pixel_format = pixel_format;
315 This->encoder_frame.bpp = bpp;
316 This->encoder_frame.indexed = indexed;
317 }
318
319 LeaveCriticalSection(&This->parent->lock);
320
321 return hr;
322}
DWORD bpp
Definition: surface.c:185
unsigned int BOOL
Definition: ntddk_ex.h:94
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
HRESULT CDECL encoder_get_supported_format(struct encoder *encoder, GUID *pixel_format, DWORD *bpp, BOOL *indexed)

◆ CommonEncoderFrame_SetResolution()

static HRESULT WINAPI CommonEncoderFrame_SetResolution ( IWICBitmapFrameEncode iface,
double  dpiX,
double  dpiY 
)
static

Definition at line 261 of file encoder.c.

263{
265 HRESULT hr;
266
267 TRACE("(%p,%0.2f,%0.2f)\n", iface, dpiX, dpiY);
268
269 EnterCriticalSection(&This->parent->lock);
270
271 if (!This->initialized || This->frame_created)
272 {
274 }
275 else
276 {
277 This->encoder_frame.dpix = dpiX;
278 This->encoder_frame.dpiy = dpiY;
279 hr = S_OK;
280 }
281
282 LeaveCriticalSection(&This->parent->lock);
283
284 return hr;
285}

◆ CommonEncoderFrame_SetSize()

static HRESULT WINAPI CommonEncoderFrame_SetSize ( IWICBitmapFrameEncode iface,
UINT  uiWidth,
UINT  uiHeight 
)
static

Definition at line 209 of file encoder.c.

211{
213 HRESULT hr;
214
215 TRACE("(%p,%u,%u)\n", iface, uiWidth, uiHeight);
216
217 EnterCriticalSection(&This->parent->lock);
218
219 if (This->parent->encoder_info.flags & ENCODER_FLAGS_ICNS_SIZE)
220 {
221 if (uiWidth != uiHeight)
222 {
223 WARN("cannot generate ICNS icon from %dx%d image\n", uiWidth, uiHeight);
225 goto end;
226 }
227
228 switch (uiWidth)
229 {
230 case 16:
231 case 32:
232 case 48:
233 case 128:
234 case 256:
235 case 512:
236 break;
237 default:
238 WARN("cannot generate ICNS icon from %dx%d image\n", uiWidth, uiHeight);
240 goto end;
241 }
242 }
243
244 if (!This->initialized || This->frame_created)
245 {
247 }
248 else
249 {
250 This->encoder_frame.width = uiWidth;
251 This->encoder_frame.height = uiHeight;
252 hr = S_OK;
253 }
254
255end:
256 LeaveCriticalSection(&This->parent->lock);
257
258 return hr;
259}
GLuint GLuint end
Definition: gl.h:1545
#define ENCODER_FLAGS_ICNS_SIZE

◆ CommonEncoderFrame_SetThumbnail()

static HRESULT WINAPI CommonEncoderFrame_SetThumbnail ( IWICBitmapFrameEncode iface,
IWICBitmapSource pIThumbnail 
)
static

Definition at line 357 of file encoder.c.

359{
360 FIXME("(%p,%p): stub\n", iface, pIThumbnail);
362}

◆ CommonEncoderFrame_WritePixels()

static HRESULT WINAPI CommonEncoderFrame_WritePixels ( IWICBitmapFrameEncode iface,
UINT  lineCount,
UINT  cbStride,
UINT  cbBufferSize,
BYTE pbPixels 
)
static

Definition at line 364 of file encoder.c.

366{
369 DWORD required_stride;
370
371 TRACE("(%p,%u,%u,%u,%p)\n", iface, lineCount, cbStride, cbBufferSize, pbPixels);
372
373 EnterCriticalSection(&This->parent->lock);
374
375 if (!This->initialized || !This->encoder_frame.height || !This->encoder_frame.width ||
376 !This->encoder_frame.bpp)
377 {
378 LeaveCriticalSection(&This->parent->lock);
380 }
381
382 required_stride = (This->encoder_frame.width * This->encoder_frame.bpp + 7)/8;
383
384 if (lineCount == 0 || This->encoder_frame.height - This->lines_written < lineCount ||
385 cbStride < required_stride || cbBufferSize < cbStride * (lineCount - 1) + required_stride ||
386 !pbPixels)
387 {
388 LeaveCriticalSection(&This->parent->lock);
389 return E_INVALIDARG;
390 }
391
392 if (!This->frame_created)
393 {
394 hr = encoder_create_frame(This->parent->encoder, &This->encoder_frame);
395 if (SUCCEEDED(hr))
396 This->frame_created = TRUE;
397 }
398
399 if (SUCCEEDED(hr))
400 {
401 hr = encoder_write_lines(This->parent->encoder, pbPixels, lineCount, cbStride);
402 if (SUCCEEDED(hr))
403 This->lines_written += lineCount;
404 }
405
406 LeaveCriticalSection(&This->parent->lock);
407
408 return hr;
409}
HRESULT CDECL encoder_create_frame(struct encoder *encoder, const struct encoder_frame *frame)
HRESULT CDECL encoder_write_lines(struct encoder *encoder, BYTE *data, DWORD line_count, DWORD stride)

◆ CommonEncoderFrame_WriteSource()

static HRESULT WINAPI CommonEncoderFrame_WriteSource ( IWICBitmapFrameEncode iface,
IWICBitmapSource pIBitmapSource,
WICRect prc 
)
static

Definition at line 411 of file encoder.c.

413{
415 HRESULT hr;
416 TRACE("(%p,%p,%s)\n", iface, pIBitmapSource, debug_wic_rect(prc));
417
418 if (!This->initialized)
420
421 hr = configure_write_source(iface, pIBitmapSource, prc,
422 This->encoder_frame.bpp ? &This->encoder_frame.pixel_format : NULL,
423 This->encoder_frame.width, This->encoder_frame.height,
424 This->encoder_frame.dpix, This->encoder_frame.dpiy);
425
426 if (SUCCEEDED(hr))
427 {
428 hr = write_source(iface, pIBitmapSource, prc,
429 &This->encoder_frame.pixel_format, This->encoder_frame.bpp,
430 !This->encoder_frame.num_colors && This->encoder_frame.indexed,
431 This->encoder_frame.width, This->encoder_frame.height);
432 }
433
434 return hr;
435}
_Out_ LPRECT prc
Definition: ntgdi.h:1658
HRESULT write_source(IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, UINT bpp, BOOL need_palette, INT width, INT height)
HRESULT configure_write_source(IWICBitmapFrameEncode *iface, IWICBitmapSource *source, const WICRect *prc, const WICPixelFormatGUID *format, INT width, INT height, double xres, double yres)
static const char * debug_wic_rect(const WICRect *rect)

◆ impl_from_IWICBitmapEncoder()

static CommonEncoder * impl_from_IWICBitmapEncoder ( IWICBitmapEncoder iface)
inlinestatic

◆ impl_from_IWICBitmapFrameEncode()

◆ impl_from_IWICMetadataBlockWriter()

static CommonEncoderFrame * impl_from_IWICMetadataBlockWriter ( IWICMetadataBlockWriter iface)
inlinestatic

Definition at line 80 of file encoder.c.

81{
82 return CONTAINING_RECORD(iface, CommonEncoderFrame, IWICMetadataBlockWriter_iface);
83}

Referenced by CommonEncoderFrame_Block_AddRef(), CommonEncoderFrame_Block_QueryInterface(), and CommonEncoderFrame_Block_Release().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wincodecs  )

Variable Documentation

◆ CommonEncoder_Vtbl

const IWICBitmapEncoderVtbl CommonEncoder_Vtbl
static
Initial value:
= {
}
static HRESULT WINAPI CommonEncoder_GetContainerFormat(IWICBitmapEncoder *iface, GUID *format)
Definition: encoder.c:587
static ULONG WINAPI CommonEncoder_Release(IWICBitmapEncoder *iface)
Definition: encoder.c:535
static HRESULT WINAPI CommonEncoder_Commit(IWICBitmapEncoder *iface)
Definition: encoder.c:821
static HRESULT WINAPI CommonEncoder_SetColorContexts(IWICBitmapEncoder *iface, UINT cCount, IWICColorContext **ppIColorContext)
Definition: encoder.c:618
static HRESULT WINAPI CommonEncoder_Initialize(IWICBitmapEncoder *iface, IStream *pIStream, WICBitmapEncoderCacheOption cacheOption)
Definition: encoder.c:555
static HRESULT WINAPI CommonEncoder_SetPreview(IWICBitmapEncoder *iface, IWICBitmapSource *pIPreview)
Definition: encoder.c:647
static HRESULT WINAPI CommonEncoder_GetEncoderInfo(IWICBitmapEncoder *iface, IWICBitmapEncoderInfo **info)
Definition: encoder.c:599
static HRESULT WINAPI CommonEncoder_SetPalette(IWICBitmapEncoder *iface, IWICPalette *palette)
Definition: encoder.c:625
static HRESULT WINAPI CommonEncoder_SetThumbnail(IWICBitmapEncoder *iface, IWICBitmapSource *pIThumbnail)
Definition: encoder.c:641
static HRESULT WINAPI CommonEncoder_QueryInterface(IWICBitmapEncoder *iface, REFIID iid, void **ppv)
Definition: encoder.c:502
static ULONG WINAPI CommonEncoder_AddRef(IWICBitmapEncoder *iface)
Definition: encoder.c:525
static HRESULT WINAPI CommonEncoder_CreateNewFrame(IWICBitmapEncoder *iface, IWICBitmapFrameEncode **ppIFrameEncode, IPropertyBag2 **ppIEncoderOptions)
Definition: encoder.c:757
static HRESULT WINAPI CommonEncoder_GetMetadataQueryWriter(IWICBitmapEncoder *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
Definition: encoder.c:844

Definition at line 851 of file encoder.c.

Referenced by CommonEncoder_CreateInstance().

◆ CommonEncoderFrame_BlockVtbl

const IWICMetadataBlockWriterVtbl CommonEncoderFrame_BlockVtbl
static
Initial value:
=
{
}
static HRESULT WINAPI CommonEncoderFrame_Block_GetWriterByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter **metadata_writer)
Definition: encoder.c:711
static HRESULT WINAPI CommonEncoderFrame_Block_GetCount(IWICMetadataBlockWriter *iface, UINT *count)
Definition: encoder.c:681
static HRESULT WINAPI CommonEncoderFrame_Block_GetReaderByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataReader **metadata_reader)
Definition: encoder.c:688
static ULONG WINAPI CommonEncoderFrame_Block_Release(IWICMetadataBlockWriter *iface)
Definition: encoder.c:667
static HRESULT WINAPI CommonEncoderFrame_Block_InitializeFromBlockReader(IWICMetadataBlockWriter *iface, IWICMetadataBlockReader *metadata_block_reader)
Definition: encoder.c:703
static ULONG WINAPI CommonEncoderFrame_Block_AddRef(IWICMetadataBlockWriter *iface)
Definition: encoder.c:660
static HRESULT WINAPI CommonEncoderFrame_Block_SetWriterByIndex(IWICMetadataBlockWriter *iface, UINT index, IWICMetadataWriter *metadata_writer)
Definition: encoder.c:726
static HRESULT WINAPI CommonEncoderFrame_Block_GetContainerFormat(IWICMetadataBlockWriter *iface, GUID *container_format)
Definition: encoder.c:674
static HRESULT WINAPI CommonEncoderFrame_Block_QueryInterface(IWICMetadataBlockWriter *iface, REFIID iid, void **ppv)
Definition: encoder.c:653
static HRESULT WINAPI CommonEncoderFrame_Block_AddWriter(IWICMetadataBlockWriter *iface, IWICMetadataWriter *metadata_writer)
Definition: encoder.c:719
static HRESULT WINAPI CommonEncoderFrame_Block_RemoveWriterByIndex(IWICMetadataBlockWriter *iface, UINT index)
Definition: encoder.c:734
static HRESULT WINAPI CommonEncoderFrame_Block_GetEnumerator(IWICMetadataBlockWriter *iface, IEnumUnknown **enum_metadata)
Definition: encoder.c:696

Definition at line 741 of file encoder.c.

Referenced by CommonEncoder_CreateNewFrame().

◆ CommonEncoderFrame_Vtbl

const IWICBitmapFrameEncodeVtbl CommonEncoderFrame_Vtbl
static
Initial value:
= {
}
static HRESULT WINAPI CommonEncoderFrame_Commit(IWICBitmapFrameEncode *iface)
Definition: encoder.c:437
static HRESULT WINAPI CommonEncoderFrame_QueryInterface(IWICBitmapFrameEncode *iface, REFIID iid, void **ppv)
Definition: encoder.c:85
static HRESULT WINAPI CommonEncoderFrame_SetResolution(IWICBitmapFrameEncode *iface, double dpiX, double dpiY)
Definition: encoder.c:261
static HRESULT WINAPI CommonEncoderFrame_GetMetadataQueryWriter(IWICBitmapFrameEncode *iface, IWICMetadataQueryWriter **ppIMetadataQueryWriter)
Definition: encoder.c:466
static HRESULT WINAPI CommonEncoderFrame_SetPalette(IWICBitmapFrameEncode *iface, IWICPalette *palette)
Definition: encoder.c:331
static ULONG WINAPI CommonEncoderFrame_AddRef(IWICBitmapFrameEncode *iface)
Definition: encoder.c:113
static HRESULT WINAPI CommonEncoderFrame_SetSize(IWICBitmapFrameEncode *iface, UINT uiWidth, UINT uiHeight)
Definition: encoder.c:209
static HRESULT WINAPI CommonEncoderFrame_SetPixelFormat(IWICBitmapFrameEncode *iface, WICPixelFormatGUID *pPixelFormat)
Definition: encoder.c:287
static HRESULT WINAPI CommonEncoderFrame_Initialize(IWICBitmapFrameEncode *iface, IPropertyBag2 *pIEncoderOptions)
Definition: encoder.c:139
static HRESULT WINAPI CommonEncoderFrame_WritePixels(IWICBitmapFrameEncode *iface, UINT lineCount, UINT cbStride, UINT cbBufferSize, BYTE *pbPixels)
Definition: encoder.c:364
static HRESULT WINAPI CommonEncoderFrame_SetThumbnail(IWICBitmapFrameEncode *iface, IWICBitmapSource *pIThumbnail)
Definition: encoder.c:357
static HRESULT WINAPI CommonEncoderFrame_SetColorContexts(IWICBitmapFrameEncode *iface, UINT cCount, IWICColorContext **ppIColorContext)
Definition: encoder.c:324
static HRESULT WINAPI CommonEncoderFrame_WriteSource(IWICBitmapFrameEncode *iface, IWICBitmapSource *pIBitmapSource, WICRect *prc)
Definition: encoder.c:411
static ULONG WINAPI CommonEncoderFrame_Release(IWICBitmapFrameEncode *iface)
Definition: encoder.c:123

Definition at line 485 of file encoder.c.

Referenced by CommonEncoder_CreateNewFrame().

◆ encoder_option_properties

const PROPBAG2 encoder_option_properties[ENCODER_OPTION_END]
static
Initial value:
= {
{ PROPBAG2_TYPE_DATA, VT_BOOL, 0, 0, (LPOLESTR)L"InterlaceOption" },
{ PROPBAG2_TYPE_DATA, VT_UI1, 0, 0, (LPOLESTR)L"FilterOption" },
{ PROPBAG2_TYPE_DATA, VT_UI1, 0, 0, (LPOLESTR)L"TiffCompressionMethod" },
{ PROPBAG2_TYPE_DATA, VT_R4, 0, 0, (LPOLESTR)L"CompressionQuality" },
{ PROPBAG2_TYPE_DATA, VT_R4, 0, 0, (LPOLESTR)L"ImageQuality" },
{ PROPBAG2_TYPE_DATA, VT_UI1, 0, 0, (LPOLESTR)L"BitmapTransform" },
{ PROPBAG2_TYPE_DATA, VT_I4 | VT_ARRAY, 0, 0, (LPOLESTR)L"Luminance" },
{ PROPBAG2_TYPE_DATA, VT_I4 | VT_ARRAY, 0, 0, (LPOLESTR)L"Chrominance" },
{ PROPBAG2_TYPE_DATA, VT_UI1, 0, 0, (LPOLESTR)L"JpegYCrCbSubsampling" },
{ PROPBAG2_TYPE_DATA, VT_BOOL, 0, 0, (LPOLESTR)L"SuppressApp0" }
}
@ VT_R4
Definition: compat.h:2299
@ VT_ARRAY
Definition: compat.h:2341
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_UI1
Definition: compat.h:2311
static LPOLESTR
Definition: stg_prop.c:27
#define L(x)
Definition: ntvdm.h:50

Definition at line 33 of file encoder.c.

Referenced by CommonEncoder_CreateNewFrame(), and CommonEncoderFrame_Initialize().