throbber
CBaseinputPin Class
`
`here as well.
`
`Page 5of14
`
`This function member should be called from any override of the CBaseinoutPin:: Receive or
`CBasePin: :EndOfStream member function (or they should do some equivalent check).
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+QH"·h' 111.q9 Topic Contents 1@1§111¥+
`
`+Qij[.jlj,M 111.11119 Topic Contents 1@1§111¥+
`
`CBaselnputPin::Disconnect
`
`CBaseinputPin Class
`
`Releases the stored allocator.
`
`HRESULT Disconnect( );
`
`Return Values
`
`Returns an HRESULT value.
`
`Remarks
`
`This member function overrides the CBasePin:: Disconnect member function. It calls
`CBasePin::Disconnect first, and then releases the allocator held by m pAllocator.
`
`© 1997 Microsoft Corporation . All rights reserved . Terms of Use.
`
`+ QIM [.] 11,1 Mii.HM Topic Contents •@!§' 1gn+
`
`CBaselnputPin::EndFlush
`
`CBaseinputPin Class
`
`Informs the pin to end a flush operation and notifies the pin that it can start accepting data
`again.
`
`HRESULT EndFlush(void);
`
`Return Values
`
`1221
`
`

`
`CBaseinputPin Class
`
`Page 6of14
`
`Returns an HRESULT value.
`
`Remarks
`
`This member function implements the I Pin:: End Flush method. When this method is called, the
`pin is beginning to end a flush operation. Your derived class must override this member
`function, but should call this member function at the end of your implementation to clear
`m bf lushing so that IMemlnputPin:: Receive calls will succeed.
`
`Before calling this base class implementation, your overriding member function should perform
`the following steps.
`
`1. Ensure that your filter will not push any additional data. (To do this, synchronize with a
`thread, stop it pushing, and discard any queued data.)
`2. Pass the Endflush method downstream by calling the method on the downstream filter's
`input pin.
`
`I Pin:: End Flush is not logically part of the media stream. It can be optimized in the sense that if
`a pin has passed no data downstream before this method is called, there is no need to pass
`this notification on.
`
`An example of an overriding implementation of this member function can be found in the
`CTransformlnputPin: :Endflush member function, which uses the
`CBaseOutputPin:: DeliverEndFlush member function to perform the last step.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Qi§1[.]1!,+ '!!·HM Topic Contents
`
`i@l§ii!MM
`
`CBaselnputPin::GetAllocator
`
`CBaselnputPin Class
`
`Retrieves the allocator interface that this input pin identifies as the interface for the output pin
`to use.
`
`HRESULT GetAllocator(
`IM em Allocator * * ppAl/ocator
`);
`
`Parameters
`
`ppA//ocator
`Pointer to an obtained IMemAllocator object.
`
`Return Values
`
`1222
`
`

`
`CBaseinputPin Class
`
`Page 7of14
`
`Default implementation returns either E_OUTOFMEMORY, if an allocator cannot be created, or
`NOERROR upon success.
`
`Remarks
`
`This member function implements the IMemlnputPin: :GetAllocator method, which is called by
`the connected output pin to retrieve an allocator to use for transporting media samples. By
`default, this member function creates a CMemAllocator object and obtains the IMemAllocator
`interface, to which it adds a reference count for the pin when assigning it to the m pAllocator
`data member, and adds another reference count before passing it back to the output pin.
`
`Override this member function if your filter has another allocator, such as one from a
`downstream pin, or a specialized allocator to offer the connected output pin.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Q'41[.]1!,+ 1 !1·HM Topic Contents
`
`ifflj[§ii!¥M
`
`CBaselnputPin::GetAllocatorRequirements
`
`CBaselnputPin Class
`
`Optional member function to use if the filter has specific alignment or prefix requirements but
`could use an upstream allocator.
`
`HRESULT GetAllocatorRequirements(
`ALLOCATOR_PROPERTIES * pProps
`);
`
`Parameters
`
`pProps
`ALLOCATOR PROPERTIES structure containing the required size, count, and alignment of
`the allocator.
`
`Return Values
`
`Returns an HRESULT value. Returns E_NOTIMPL by default.
`
`Remarks
`
`Override this member function if you have specific alignment or prefix requirements but could
`use an upstream allocator.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Q'41[.]1!,+ 1 !1·HM Topic Contents
`
`ifflj[§ii!¥M
`
`1223
`
`

`
`CBaseinputPin Class
`
`Page 8of14
`
`CBaselnputPin::lnactive
`
`CBaseinoutPin Class
`
`Releases the allocator's memory.
`
`HRESULT Inactive(void);
`
`Return Values
`
`Returns an HRESULT value.
`
`Remarks
`
`This member function is called through IMediaFilter, which is responsible for locking the object
`first.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Qi§i[.]ii,+ '!!·HM Topic Contents
`
`i@l§ii!MM
`
`CBaselnputPin::lsFlushing
`
`CBaseinputPin Class
`
`Checks the m bFlushing data member and returns its value.
`
`BOOL Isflushing(void);
`
`Return Values
`
`Returns TRUE if the input pin is flushing data; otherwise, returns FALSE.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`H Qi§1 [.] jj,M I !l.H9 Topic Contents Mttfjl§ii!MM
`
`CBaselnputPin::lsReadOnly
`
`1224
`
`

`
`CBaseinputPin Class
`
`Page 9of14
`
`CBaseinoutPin Class
`
`Checks the m bReadOnly data member and returns its value.
`
`BOOL IsReadOnly(void);
`
`Return Values
`
`Returns TRUE if the allocator has read-only samples; otherwise, returns FALSE.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQl@[.jjj,M l!i.! 11ij Topic Contents
`
`l@i§lllMM
`
`CBaselnputPin::NonDelegatingQuerylnterface
`
`CBaseinputPin Class
`
`Retrieves an interface and increments the reference count.
`
`H RESULT Non Delegati ngQuerylnterface(
`REFllD riid,
`void** ppv
`);
`
`Parameters
`
`riid
`
`ppv
`
`Reference identifier.
`
`Pointer to the interface.
`
`Return Values
`
`Returns E_ POINTER if ppv is invalid. Returns NOERROR if the query is successful or
`E_NOINTERFACE if it is not.
`
`Remarks
`
`This member function implements the INonDeleqatinqUnknown: :NonDeleqatinqOueryinterface
`method and passes out references to the IMeminputPin and IUnknown interfaces. Override this
`class to return other interfaces on the object in the derived class.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQl@[.jjj,M l!i.l:.ij Topic Contents
`
`l@i§lllMM
`
`1225
`
`

`
`CBaseinputPin Class
`
`Page 10of14
`
`CBaselnputPin::Notify
`
`CBaseinoutPin Class
`
`Notifies the recipient that a quality change is requested.
`
`HRESULT Notify(
`IBaseFilter * pSelf,
`Quality q
`);
`
`Parameters
`
`pSelf
`Pointer to the filter that is sending the quality notification.
`
`q
`
`Quality notification structure.
`
`Return Values
`
`Returns NOERROR by default.
`
`Remarks
`
`The IQualityControl: :Notify method is usually implemented on the output pin, because quality(cid:173)
`control messages are passed upstream, and not on the input pin.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`MQ<§i[.jjj,M MB.HS Topic Contents
`
`i@faii!MM
`
`CBasel n putPi n:: Notify Al locator
`
`CBaseinoutPin Class
`
`Notifies the input pin as to which allocator the output pin is actually going to use.
`
`HRESULT NotifyAllocator(
`IMemAllocator * pAl/ocator,
`BOOL bReadOnly
`);
`
`Parameters
`
`1226
`
`

`
`CBaseinputPin Class
`
`Page 11of14
`
`pAl/ocator
`Pointer to the IMemAllocator object to use. This might or might not be the same
`IMemAllocator object that the input pin provided in the IMeminputPin: :GetAllocator
`method (the output pin could provide its own allocator).
`bReadOnly
`Flag to indicate if the samples from this allocator are read-only.
`
`Return Values
`
`Default implementation returns NOERROR.
`
`Remarks
`
`This member function implements the IMeminputPin:: NotifyAllocator method, which is called
`by the connected output pin to inform the input pin of the chosen allocator for the memory
`transport. Override this member function if your filter cares about this information. By default,
`this sets the m pAllocator data member to the allocator interface passed in after adding a
`reference count to that interface.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQl@[.jlj,M l!i.! 11ij
`
`Topic Contents
`
`l@i§lllMM
`
`CBaselnputPin::PassNotify
`
`CBaseinputPin Class
`
`Passes a quality-control notification to the appropriate sink.
`
`HRESULT PassNotify(
`Quality q
`);
`
`Parameters
`
`q
`
`Quality-control notification object.
`
`Return Values
`
`Returns VFW_E_NOT _FOUND if no quality sink is set and the upstream filter does not support
`the IQualityControl interface. Otherwise, returns the HRESULT value resulting from notifying
`the sink or the upstream filter.
`
`Remarks
`
`Output pins receive quality-control notifications and, if possible, filters act on them to degrade
`
`1227
`
`

`
`CBaseinputPin Class
`
`Page 12of14
`
`appropriately. Often, filters cannot respond to the notifications; in this case the notification
`should be passed to the quality-control sink or, by default, upstream to the next filter. The
`PassNotify member function is called from the CTransformOutputPin: :Notify member function
`when a notification requires passing. The Quality structure passed is the one that the output
`pin received.
`
`© 1997 Microsoft Corporation . All rights reserved . Terms of Use .
`
`MQ<§i[.jjj,M 111.],.(9
`
`Topic Contents
`
`lmll§lllMM
`
`CBaselnputPin::Receive
`
`CBaseinputPin Class
`
`Retrieves the next block of data from the stream.
`
`HRESULT Receive(
`IMediaSample * pSample
`);
`
`Parameters
`
`pSample
`Pointer to a media sample.
`
`Return Values
`
`Returns an HRESULT value.
`
`Remarks
`
`This member function implements the IMeminputPin:: Receive method. It first checks that it
`can process the sample by calling CBaseinputPin: :CheckStreaming; if that member function
`does not return S_OK, Receive returns immediately with the value returned by
`CBaseinputPin: :CheckStreaming.
`
`This base class member function checks to see if the format has changed with this media
`sample; if so, it checks that the filter will accept it, generating a run-time error if not. If a run(cid:173)
`time error is raised, the m bRunTimeError data member is set so that no more samples will be
`accepted.
`
`The overriding member function does something with the passed-in sample, such as calling a
`member function to transform it or pass it downstream.
`
`This is a blocking synchronous call. Typically no blocking occurs, but if a filter cannot process
`the sample immediately, it can use the calling application's thread to wait until it can.
`
`Call the IUnknown: :AddRef method if you must hold the returned data block beyond the
`
`1228
`
`

`
`CBaseinputPin Class
`
`Page 13of14
`
`completion of the IMeminputPin:: Receive method. If you call Add Ref, be sure to call
`!Unknown:: Release when done with it.
`
`© 1997 Microsoft Corporation . All rights reserved . Terms of Use.
`
`w QiM [.] +• 811.HM Topic Contents 8ml!§M 8gnw
`
`CBaselnputPin::ReceiveCanBlock
`
`CBaseinputPin Class
`
`Determines if the implementation of the IMeminputPin:: Receive method might block on the
`connected output pin.
`
`HRESULT ReceiveCanBlock(void);
`
`Return Values
`
`Returns an HRESULT value, which can include one of the following values.
`Value Meaning
`S_FALSE Input pin will not block on a Receive method.
`S_OK
`Input pin might block on a Receive method.
`
`Remarks
`
`This member function implements the IMeminputPin:: ReceiveCanBlock method. The base class
`implementation calls the IMemlnputPin::ReceiveCanBlock method on the input pin
`connected to each of the filter's output pins.
`
`This member function is useful because an output pin from a filter might require notification if
`its thread might be blocked when it calls the Receive method on the connected input pin. For
`example, a source filter might prefer to keep reading and buffering data rather than be
`blocked, and might choose to start another thread to wait on the blocking Receive method.
`See the COutputQueue base class for queuing samples to input pins that potentially block.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQl@[.jlj,M 8!1.l:.15 Topic Contents 8@1§181MM
`
`CBasel n putPi n:: ReceiveM u lti pie
`
`CBaseinputPin Class
`
`1229
`
`

`
`CBaselnputPin Class
`
`Page 14of14
`
`Retrieves the next block of data from the stream. This method behaves much like the
`IMeminputPin:: Receive method, but it works with multiple samples. Override this function if
`you can usefully process samples in batches.
`
`HRESULT ReceiveMultiple(
`IMediaSample ** pSamples,
`long nSamples,
`long * nSamplesProcessed
`);
`
`Parameters
`
`pSamples
`Pointer to an array of samples.
`nSamples
`Number of samples to process.
`nSamplesProcessed
`Number of samples processed.
`
`Return Values
`
`Returns an HRESULT value.
`
`Remarks
`
`This member function implements the IMeminputPin:: ReceiveMultiple method. It is
`implemented to call the CBaseinputPin:: Receive member function in a loop for nSamples
`number of iterations.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQi@[.jlj,M M!i.!111j Topic Contents
`
`l@i§il!MM
`
`1230
`
`

`
`CBaseList Class
`
`Page I of 17
`
`w41411.111e 1:1.11119 Topic Contents 1 @1#1 1 ttti8
`
`CBaseList Class
`
`CBaseObject
`
`CBaselist
`
`The (;Ba$d.ist class represents a liSt of pointers to objects. No storage management or
`copying is done on the objects that are pointed to.
`
`The implementation allows for objects to be on multiple lists simultaneously and does not
`require support in the objects themselves; therefore, it iS particularly useful for holding
`variable-length lists of interface pointers.
`
`The implementation is not multithread safe. External locks are required to maintain the
`integrity of the list when it is accessed from more than one thread simultaneously.
`
`The POSITION structure represents a position in a linked list that is actually a void pointer. A
`position represents a cursor on the liSt that can be set to identify any element. NULL is a valid
`value, and several operations regard NULL as the position that is "one step off the end of the
`list." (In an n element liSt there are n+ 1 places to insert, and NULL iS that n+ 1 value.) The
`position of an element in the list is only invalidated if that element is deleted. Move operations
`might indicate that what was a valid position in one list is now a valid position in a different
`list.
`
`Some operations, which at first sight seem illegal, are allowed as harmless null operations (no(cid:173)
`ops). For example, the CBase! ist· ·RemoYf'Headl member function is legal on an empty list,
`and it returns NULL. This allows an atomic way to test if there is an element there and, if so, to
`retrieve it.
`
`Single-element operations return positions, where a non-NULL value indicates that it worked.
`Entire list operations return a Boolean value, where TRUE indicates success.
`
`Pratected Data Members
`Name
`Descnptian
`m_C<lunt Number of nodes in the list.
`m_pFirst Pointer to the first node in the list.
`m_plast Pointer to the last node in the list.
`
`Member Functians
`
`1231
`
`

`
`CBaseList Class
`
`Page 2of17
`
`Description
`Name
`Inserts a list of nodes after the specified node.
`AddAfter
`Inserts a node after the specified node.
`AddAfterl
`Inserts a list of nodes before the specified node.
`Add Before
`Inserts a node before the specified node.
`AddBeforel
`Inserts a list of nodes at the front of the list.
`AddHead
`Inserts a node at the front of the list.
`Add Head I
`AddTail
`Appends a list of nodes to the end of the list.
`AddTaill
`Appends a node to the end of the list.
`CBaselist
`Constructs a CBaselist object.
`Find I
`Returns the first position that holds the specified object.
`Returns the number of objects in the list.
`GetCountl
`GetHeadPositionl Returns a cursor identifying the first element of the list.
`Getl
`Returns the object at the specified position.
`Returns the specified object and updates the position.
`GetNextl
`GetTailPositionl Returns a cursor identifying the last element of the list.
`Moves the node or list of nodes to the beginning of a second list.
`Move To Head
`MoveToTail
`Moves the node or list of nodes to the end of a second list.
`Next
`Returns the next position in the list.
`Prev
`Returns the previous position in the list.
`RemoveAll
`Removes all nodes from the list.
`RemoveHeadl
`Removes the first node in the list.
`Remove I
`Removes the specified node from the list.
`Remove Ta ill
`Removes the last node in the list.
`Reverse
`Reverses the order of the pointers to the objects in the list.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`MQ<§i[.jjj,M MB.HS Topic Contents
`
`i@fa111¥M
`
`8 4'41[.]1!,M 1!1·H¥
`
`Topic Contents
`
`i@fai11¥M
`
`CBaselist: :AddAfter
`
`CBaseList Class
`
`Inserts a list of nodes after the specified node.
`
`BOOL AddAfter(
`POSITION pos,
`CBaselist *pList
`);
`
`1232
`
`

`
`Page 3of17
`
`CBaseList Class
`
`Parameters
`
`pos
`
`pList
`
`Position after which to add the list of nodes.
`
`Pointer to the list of objects to add.
`
`Return Values
`
`Returns TRUE if successful; otherwise, returns FALSE.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+;<§1[.]lj,i '!!·!:.!¥ Topic Contents i@i§ll!¥+
`
`CBaselist: :AddAfterl
`
`CBaseList Class
`
`Inserts a node after the specified node.
`
`POSITION AddAfterI(
`POSITION pos,
`void* pObj
`);
`
`Parameters
`
`pos
`
`pObj
`
`Position after which to add the node.
`
`Pointer to the object to add.
`
`Return Values
`
`Returns the position of the inserted object.
`
`Remarks
`
`The following member function adds x to the start, which is equivalent to calling the
`CBaseList: :AddHeadI member function:
`
`AddAfterI (NULL,x)
`
`If the list insertion fails, some of the elements might have been added. Existing positions in
`the list, including the position specified in the pos parameter, remain valid. The following two
`member functions are equivalent even in cases where pos is NULL or the Next(p) parameter is
`
`1233
`
`

`
`CBaseList Class
`
`Page 4of17
`
`NULL. (This is similar for the mirror case.)
`
`AddAfterI (p,x)
`AddBeforeI(Next(p) ,x )
`
`© 1997 Microsoft Corporation . All rights reserved. Terms of Use.
`
`w Q<M [.] +• 111.HM
`MQi§i[.]11,M 11!.HM
`
`Topic Contents •=@• 1gnw
`
`Topic Contents
`
`l@l§il!MM
`
`CBaselist: :Add Before
`
`CBaseList Class
`
`Inserts a list of nodes before the specified node.
`
`BOOL AddBefore(
`POSITION pos,
`CBaselist *pList
`);
`
`Parameters
`
`pos
`
`pList
`
`Position before which to add the list of nodes.
`
`Pointer to the list of objects to add.
`
`Return Values
`
`Returns TRUE if successful; otherwise, returns FALSE.
`
`Remarks
`
`If the list insertion fails, some of the elements might have been added. Existing positions in
`the list, including the position specified in the pos parameter, remain valid.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`M Q i§i [.] jj,M I !!·HM Topic Contents
`
`l@l§il!MM
`
`CBaselist: :AddBeforel
`
`1234
`
`

`
`CBaseList Class
`
`Page 5of17
`
`CBaseList Class
`
`Inserts a node before the specified node.
`
`POSITION AddBeforeI(
`POSITION pos,
`void* pObj
`);
`
`Parameters
`
`pos
`
`pObj
`
`Position before which to add the node or list of nodes.
`
`Pointer to the object to add.
`
`Return Values
`
`Returns the position of the inserted object.
`
`Remarks
`
`The following member function adds the value specified in the x parameter to the end, which is
`equivalent to calling the CBaseList::AddTailI member function:
`
`AddBeforeI(NULL,x)
`
`The following two member functions are equivalent even in cases where pos is NULL or the
`Next(p) parameter is NULL. (This is similar for the mirror case.)
`
`AddAfterI(p,x)
`AddBeforeI(Next(p) ,x)
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`MQ<§i[.jjj,M MB.HS
`
`Topic Contents
`
`i@fa111¥M
`
`8 4'41[.]1!,M 1!1·H¥
`
`Topic Contents
`
`i@fa111¥M
`
`CBaselist: :Add Head
`
`CBaseList Class
`
`Inserts a list of nodes at the front of the list.
`
`BOOL Add Head (
`
`1235
`
`

`
`Page 6of17
`
`CBaseList Class
`
`CBaselist *pList
`);
`
`Parameters
`
`pList
`
`Pointer to the list of objects to add.
`
`Return Values
`
`No return value.
`
`Remarks
`
`If you are adding Component Object Model (COM) objects, you might want to add references to
`them (using the I Unknown: :AddRef method) first. Other existing positions in the list remain
`valid.
`
`This member function duplicates all the nodes in the pList parameter (that is, duplicates all its
`pointers to objects). It does not duplicate the objects.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+QH"·h' 111.q9 Topic Contents 1@1§111¥+
`
`CBaselist: :AddHeadl
`
`CBaseList Class
`
`Inserts a node at the front of the list.
`
`POSITION AddHeadI(
`void* pObj
`);
`
`Parameters
`
`pObj
`
`Pointer to the object to add.
`
`Return Values
`
`Returns the new head position, or NULL if it fails. For list insertions, returns TRUE if successful;
`otherwise, returns FALSE.
`
`Remarks
`
`If you are adding Component Object Model (COM) objects, you might want to add references to
`
`1236
`
`

`
`CBaseList Class
`
`Page 7of17
`
`them (using the IUnknown: :AddRef method) first. Other existing positions in the list remain
`valid.
`
`© 1997 Microsoft Corporation . All rights reserved. Terms of Use.
`
`w Q<M [.] +• 111.H5
`
`Topic Contents •=@• 1gnw
`
`CBaselist: :AddTai I
`
`CBaseList Class
`
`Appends a list of nodes to the end of the list.
`
`BOOL AddTail(
`CBaselist *pList
`);
`
`Parameters
`
`pList
`
`Pointer to the list of objects to add.
`
`Return Values
`
`No return value.
`
`Remarks
`
`This member function duplicates all the nodes in pList (that is, duplicates all its pointers to
`objects). It does not duplicate the objects. Existing positions in the list remain valid.
`
`© 1997 Microsoft Corporation . All rights reserved. Terms of Use.
`
`• A Mi[.]"'' I !!·HM
`
`Topic Contents
`
`lml!§lllMM
`
`CBaselist: :AddTai II
`
`CBaseList Class
`
`Appends a single node to the end of the list.
`
`POSITION AddTailI(
`void* pObj
`
`1237
`
`

`
`CBaseList Class
`
`);
`
`Parameters
`
`pObj
`
`Page 8of17
`
`Pointer to the object to add.
`
`Return Values
`
`Returns the new tail position, if successful; otherwise, returns NULL.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Q'41[.]i!,+ 1 !1·HM
`
`Topic Contents
`
`ifflj[§ii!¥M
`
`CBaselist: :CBaselist
`
`CBaseList Class
`
`Constructs a CBaseList object.
`
`CBaselist(
`TCHAR *pName,
`INT iltems
`);
`
`CBaselist(
`TCHAR *pName
`);
`
`Parameters
`
`pName
`Name of the list.
`iltems
`Number of items in the list.
`
`Return Values
`
`No return value.
`
`© 1997 Microsoft Corporation . All rights reserved . Terms of Use.
`
`+;<§1[.]i!,+ +II.HM
`
`Topic Contents
`
`+@!§' +gn+
`
`1238
`
`

`
`CBaseList Class
`
`Page 9of17
`
`CBaselist: :FindI
`
`CBaselist Class
`
`Retrieves the first position that holds the specified object.
`
`POSITION FindI(
`void* pObj
`);
`
`Parameters
`
`pObj
`
`Pointer to the object to find.
`
`Return Values
`
`Returns a position cursor.
`
`Remarks
`
`A position cursor identifies an element on the list. Use the CBaselist: :GetI member function to
`return the object at this position.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQiji.li!:M l!i.! 11ij Topic Contents
`
`l@l§i 11111+
`
`CBaselist: :GetCountI
`
`CBaselist Class
`
`Retrieves the number of objects (object count) in the list.
`
`int GetCountI( ) ;
`
`Return Values
`
`Returns the number of objects in the list.
`
`© 1997 Microsoft Comoration. All rights reserved. Terms of Use.
`
`MQl§1[.jjj,M 11!.Hj Topic Contents 1@1§11!¥+
`
`1239
`
`

`
`CBaseList Class
`
`Page 10of17
`
`CBaselist: :GetHead Position!
`
`CBaseList Class
`
`Retrieves a cursor identifying the first element of the list.
`
`POSITION GetHeadPositionI( ) ;
`
`Return Values
`
`Returns a position cursor.
`
`Remarks
`
`A position cursor represents an element on the list. It is defined as a pointer to a void.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQi@[.jlj,M l!i.! 111j
`
`Topic Contents
`
`l@IJll!MM
`
`CBaselist: :Getl
`
`CBaseList Class
`
`Retrieves the object at the specified position.
`
`void *GetI(
`POSITION pos
`);
`
`Parameters
`
`pos
`
`Position in the list from which to retrieve the object.
`
`Return Values
`
`Returns a pointer to the object as position pos.
`
`Remarks
`
`Use the CBaseList:: Next, CBaseList:: Prev, or CBaseList:: FindI member function to obtain the
`position. Asking for the object at a NULL position returns NULL without generating an error.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`1240
`
`

`
`CBaseList Class
`
`Page 11of17
`
`+Qi§1[.]++ 1 !!·HM
`
`Topic Contents
`
`i@l§ii!MM
`
`CBaselist: :GetNextI
`
`CBaseList Class
`
`Retrieves the specified object and updates the position.
`
`void *GetNextI(
`POSITION& rp
`);
`
`Parameters
`
`rp
`
`Returned pointer to the next object.
`
`Return Values
`
`Returns a pointer to an object at the next position.
`
`Remarks
`
`This member function updates the rp parameter to the next node in the list, but makes it NULL
`if it was at the end of the list.
`
`This member function is retained only for backward compatibility. (GetPrev is not
`implemented.)
`
`Use the CBaseList:: Next and CBaseList:: Prev member functions to access the next or previous
`object in the list.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Qi@[.jjj,+ 111.11119 Topic Contents
`
`i@l§ii!MM
`
`CBaselist: :GetTa i I Position I
`
`CBaseList Class
`
`Retrieves a cursor identifying the last element of the list.
`
`1241
`
`

`
`CBaseList Class
`
`Page 12of17
`
`POSITION GetTailPositionI( );
`
`Return Values
`
`Returns a position cursor.
`
`Remarks
`
`A position cursor represents an element on the list. A position is defined as a pointer to a void.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQl@[.jjj,M 111.l:.!j
`
`Topic Contents
`
`l@i§i llfttiM
`
`CBaselist:: MoveToHead
`
`CBaselist Class
`
`Moves the node or list of nodes to the beginning of a second list.
`
`BOOL MoveToHead(
`POSITION pos,
`CBaselist *pList
`);
`
`Parameters
`
`pos
`
`pList
`
`Position that marks the split in the list.
`
`List in which to add the section of the list preceding the position passed in the pos
`parameter.
`
`Return Values
`
`Returns TRUE if successful; otherwise, returns FALSE.
`
`Remarks
`
`This member function splits the current list after the position specified in the pos parameter in
`the list and retains the head portion of the original list. It then adds the tail portion to the head
`of the second list, identified by the pList parameter.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQi@[.jjj,M l!i.! 111j Topic Contents
`
`l@i§il!MM
`
`1242
`
`

`
`CBaseList Class
`
`Page 13of17
`
`CBaselist: :MoveToTail
`
`CBaseList Class
`
`Moves the node or list of nodes to the end of a second list.
`
`BOOL MoveToTail(
`POSITION pos,
`CBaselist *pList
`);
`
`Parameters
`
`pos
`
`pList
`
`Position that marks the split in the list.
`
`List in which to add the section of the list specified in the pos parameter.
`
`Return Values
`
`Returns TRUE if successful; otherwise, returns FALSE.
`
`Remarks
`
`This member function splits the current list after the position specified in the pos parameter in
`the list and retains the tail portion of the original list. It then adds the head portion to the tail
`end of the second list, using the pList parameter.
`
`© 1997 Microsoft Corporation . All rights reserved. Terms of Use.
`
`MQi§i[.jjj,M 11!.HS
`
`Topic Contents
`
`lmll§I 11$8
`
`CBaselist::Next
`
`CBaseList Class
`
`Retrieves the next position in the list.
`
`POSITION Next(
`POSITION pos
`);
`
`Parameters
`
`1243
`
`

`
`CBaseList Class
`
`Page 14of17
`
`pos
`
`Current position in the list.
`
`Return Values
`
`Returns a position cursor.
`
`Remarks
`
`This member function returns NULL when going past the beginning of the list. Calling the
`CBaselist::Next member function with a null value is similar to calling the
`CBaseList: :GetHeadPositionl member function.
`
`Use the CBaseList: :Getl member function to return the object at the returned position.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`MQ<§i[.jjj,M MB.HS Topic Contents
`
`i@faii!MM
`
`CBaselist:: Prev
`
`CBaseList Class
`
`Retrieves the previous position in the list.
`
`POSITION Prev(
`POSITION pos
`);
`
`Parameters
`
`pos
`
`Current position in the list.
`
`Return Values
`
`Returns a position cursor.
`
`Remarks
`
`This member function returns NULL when going past the end of the list. Calling the
`CBaselist::Prev member function with a null value is similar to calling the
`CBaseList: :GetTailPositionl member function.
`
`Use the CBaseList: :Getl member function to return the object at the returned position.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`1244
`
`

`
`CBaseList Class
`
`Page 15of17
`
`+Qi§1[.]I!:+ 1 !!·HM Topic Contents
`
`i@l§ii!MM
`
`CBaselist: :RemoveAll
`
`CBaseList Class
`
`Removes all nodes from the list.
`
`void RemoveAll( );
`
`Return Values
`
`No return value.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`H Qi§1[.]11:+ I !l.H9 Topic Contents Mttfjl§ii!MM
`
`CBaselist:: RemoveHeadI
`
`CBaseList Class
`
`Removes the first node in the list.
`
`void *RemoveHeadI( );
`
`Return Values
`
`Returns the pointer to the object that was removed.
`
`Remarks
`
`This member function deletes the pointer to its object from the list, but does not free the
`object itself.
`
`If the list was already empty, this member function harmlessly returns NULL.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`MQi@[.]l!:i M!l.11119 Topic Contents
`
`i@l§i 11111+
`
`1245
`
`

`
`CBaseList Class
`
`Page 16of17
`
`CBaselist:: Remove!
`
`CBaseList Class
`
`Removes the specified node from the list.
`
`void * RemoveI(
`POSITION pos
`);
`
`Parameters
`
`pos
`
`Position in the list of the node to remove.
`
`Return Values
`
`Returns the pointer to the object that was removed.
`
`Remarks
`
`This member function deletes the pointer to its object from the list, but does not free the
`object itself.
`
`If the list was already empty, this member function harmlessly returns NULL.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`+Q'41[.]1!,+ 1 !1·HM Topic Contents
`
`ifflj[§ii!¥M
`
`CBaselist::RemoveTaill
`
`CBaseList Class
`
`Removes the last node in the list.
`
`void *RemoveTailI( );
`
`Return Values
`
`Returns the pointer to the object that was removed.
`
`1246
`
`

`
`CBaseList Class
`
`Remarks
`
`Page 17of17
`
`This member function deletes the pointer to its object from the list, but does not free the
`object.
`
`If the list was already empty, this member function harmlessly returns NULL.
`
`© 1997 Microsoft Corooration . All rights reserved. Terms of Use.
`
`MQ<§i[.jjj,M MB.HS Topic Contents
`
`i@faii!MM
`
`CBaselist::Reverse
`
`CBaselist Class
`
`Reverses the order of the pointers to the objects in the list.
`
`void Reverse( );
`
`Return Values
`
`No return value.
`
`© 1997 Microsoft Corporation. All rights reserved. Terms of Use.
`
`1247
`
`

`
`CBaseMediaFil ter Cl ass
`
`Page 1 of9
`
`w41411.111e 1:1.11119 Topic Contents 1 @1#1 1 ttti8
`
`CBaseMediaFilter Class
`
`CBaseObject
`
`CUnknown
`
`CBaseMediafilter
`
`This iS an abstract base class that provides support for the IMediafilter interface. The
`CBaseMediaFiltet class handles State Stopped, State Paused, and State Running state
`transitions. Typically, this class is used for plug-in distributors rather than filters with pins.
`Derive your filter classes from the CBasefilter class (or base classes derived from this) instead
`of from this class.
`
`AU member functions in this class that return HRESULT and accept a pointer as a parameter
`return E .... POINTER when passed a null pointer.
`
`Protecte<I Data Members
`Name
`Description
`m_clsid Class identifier (CLSID) used for serialization using IPersist.
`m_pClock Pointer to a reference clock used for synchronization. The reference count of the
`clock object must be incremented using AddRef. Pass NULL if no reference clock is
`available.
`m_State Current state of the filter, which can be State Stopped, State Paused, or
`State Running.
`m_tStart Offset from the stream time to the reference time.
`
`Member Functions
`Name
`Description
`CBaseMedjafi!terConstructs a CBaseMediafi!ter object.
`Determines if the filter is currently active (running or paused) or stopped.
`IsActjve
`
`Overridable Member Functions
`Name
`Description
`StreamTime Returns the current stream time.
`
`Implemente<I !Persist Methods
`Name
`Description
`\..etC!assID Returns the class identifier of this filter.
`
`1248
`
`

`
`CBaseMediaFilter Class
`
`Page 2 of9
`
`Implemented IMediaFilter Methods
`Name
`Description
`GetState
`Retrieves the current state of the filter.
`GetSyncSource Retrieves the current reference clock in use by this filter.
`Pause
`Instructs the filter to transition to the new (paused) state.
`Run
`Instructs the filter to transition to the new (running) state.
`SetSyncSource Informs the filter of the refer

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket