[PATCH 1/2] strmbase: Remove the no longer used output queue helper.

Zebediah Figura zfigura at codeweavers.com
Mon Nov 29 18:30:35 CST 2021


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 include/wine/strmbase.h     |  36 -----
 libs/strmbase/Makefile.in   |   1 -
 libs/strmbase/outputqueue.c | 275 ------------------------------------
 3 files changed, 312 deletions(-)
 delete mode 100644 libs/strmbase/outputqueue.c

diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h
index b01bac89aa6..72aa49847c4 100644
--- a/include/wine/strmbase.h
+++ b/include/wine/strmbase.h
@@ -201,42 +201,6 @@ HRESULT WINAPI SourceSeekingImpl_SetRate(IMediaSeeking * iface, double dRate);
 HRESULT WINAPI SourceSeekingImpl_GetRate(IMediaSeeking * iface, double * dRate);
 HRESULT WINAPI SourceSeekingImpl_GetPreroll(IMediaSeeking * iface, LONGLONG * pPreroll);
 
-/* Output Queue */
-typedef struct tagOutputQueue {
-    CRITICAL_SECTION csQueue;
-
-    struct strmbase_source *pInputPin;
-
-    HANDLE hThread;
-    HANDLE hProcessQueue;
-
-    LONG lBatchSize;
-    BOOL bBatchExact;
-    BOOL bTerminate;
-    BOOL bSendAnyway;
-
-    struct list SampleList;
-
-    const struct OutputQueueFuncTable* pFuncsTable;
-} OutputQueue;
-
-typedef DWORD (WINAPI *OutputQueue_ThreadProc)(OutputQueue *This);
-
-typedef struct OutputQueueFuncTable
-{
-    OutputQueue_ThreadProc pfnThreadProc;
-} OutputQueueFuncTable;
-
-HRESULT WINAPI OutputQueue_Construct( struct strmbase_source *pin, BOOL bAuto,
-    BOOL bQueue, LONG lBatchSize, BOOL bBatchExact, DWORD dwPriority,
-    const OutputQueueFuncTable* pFuncsTable, OutputQueue **ppOutputQueue );
-HRESULT WINAPI OutputQueue_Destroy(OutputQueue *pOutputQueue);
-HRESULT WINAPI OutputQueue_ReceiveMultiple(OutputQueue *pOutputQueue, IMediaSample **ppSamples, LONG nSamples, LONG *nSamplesProcessed);
-HRESULT WINAPI OutputQueue_Receive(OutputQueue *pOutputQueue, IMediaSample *pSample);
-VOID WINAPI OutputQueue_EOS(OutputQueue *pOutputQueue);
-VOID WINAPI OutputQueue_SendAnyway(OutputQueue *pOutputQueue);
-DWORD WINAPI OutputQueueImpl_ThreadProc(OutputQueue *pOutputQueue);
-
 enum strmbase_type_id
 {
     IBasicAudio_tid,
diff --git a/libs/strmbase/Makefile.in b/libs/strmbase/Makefile.in
index 077abc1da50..8b6ea8a3b43 100644
--- a/libs/strmbase/Makefile.in
+++ b/libs/strmbase/Makefile.in
@@ -4,7 +4,6 @@ C_SRCS = \
 	dispatch.c \
 	filter.c \
 	mediatype.c \
-	outputqueue.c \
 	pin.c \
 	pospass.c \
 	renderer.c \
diff --git a/libs/strmbase/outputqueue.c b/libs/strmbase/outputqueue.c
deleted file mode 100644
index 4ac3ef72bd5..00000000000
--- a/libs/strmbase/outputqueue.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Generic Implementation of COutputQueue
- *
- * Copyright 2011 Aric Stewart, CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "strmbase_private.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(quartz);
-
-enum {SAMPLE_PACKET, EOS_PACKET};
-
-typedef struct tagQueuedEvent {
-    int type;
-    struct list entry;
-
-    IMediaSample *pSample;
-} QueuedEvent;
-
-static DWORD WINAPI OutputQueue_InitialThreadProc(LPVOID data)
-{
-    OutputQueue *This = (OutputQueue *)data;
-    return This->pFuncsTable->pfnThreadProc(This);
-}
-
-static void OutputQueue_FreeSamples(OutputQueue *pOutputQueue)
-{
-    struct list *cursor, *cursor2;
-    LIST_FOR_EACH_SAFE(cursor, cursor2, &pOutputQueue->SampleList)
-    {
-        QueuedEvent *qev = LIST_ENTRY(cursor, QueuedEvent, entry);
-        list_remove(cursor);
-        HeapFree(GetProcessHeap(),0,qev);
-    }
-}
-
-HRESULT WINAPI OutputQueue_Construct(struct strmbase_source *pInputPin, BOOL bAuto,
-        BOOL bQueue, LONG lBatchSize, BOOL bBatchExact, DWORD dwPriority,
-        const OutputQueueFuncTable *pFuncsTable, OutputQueue **ppOutputQueue)
-
-{
-    BOOL threaded = FALSE;
-    DWORD tid;
-
-    OutputQueue *This;
-
-    if (!pInputPin || !pFuncsTable || !ppOutputQueue)
-        return E_INVALIDARG;
-
-    *ppOutputQueue = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(OutputQueue));
-    if (!*ppOutputQueue)
-        return E_OUTOFMEMORY;
-
-    This = *ppOutputQueue;
-    This->pFuncsTable = pFuncsTable;
-    This->lBatchSize = lBatchSize;
-    This->bBatchExact = bBatchExact;
-    InitializeCriticalSection(&This->csQueue);
-    This->csQueue.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": OutputQueue.csQueue");
-    list_init(&This->SampleList);
-
-    This->pInputPin = pInputPin;
-    IPin_AddRef(&pInputPin->pin.IPin_iface);
-
-    EnterCriticalSection(&This->csQueue);
-    if (bAuto && pInputPin->pMemInputPin)
-        threaded = IMemInputPin_ReceiveCanBlock(pInputPin->pMemInputPin) == S_OK;
-    else
-        threaded = bQueue;
-
-    if (threaded)
-    {
-        This->hThread = CreateThread(NULL, 0, OutputQueue_InitialThreadProc, This, 0, &tid);
-        if (This->hThread)
-        {
-            SetThreadPriority(This->hThread, dwPriority);
-            This->hProcessQueue = CreateEventW(NULL, 0, 0, NULL);
-        }
-    }
-    LeaveCriticalSection(&This->csQueue);
-
-    return S_OK;
-}
-
-HRESULT WINAPI OutputQueue_Destroy(OutputQueue *pOutputQueue)
-{
-    EnterCriticalSection(&pOutputQueue->csQueue);
-    OutputQueue_FreeSamples(pOutputQueue);
-    pOutputQueue->bTerminate = TRUE;
-    SetEvent(pOutputQueue->hProcessQueue);
-    LeaveCriticalSection(&pOutputQueue->csQueue);
-
-    pOutputQueue->csQueue.DebugInfo->Spare[0] = 0;
-    DeleteCriticalSection(&pOutputQueue->csQueue);
-    CloseHandle(pOutputQueue->hProcessQueue);
-
-    IPin_Release(&pOutputQueue->pInputPin->pin.IPin_iface);
-    HeapFree(GetProcessHeap(),0,pOutputQueue);
-    return S_OK;
-}
-
-HRESULT WINAPI OutputQueue_ReceiveMultiple(OutputQueue *pOutputQueue, IMediaSample **ppSamples, LONG nSamples, LONG *nSamplesProcessed)
-{
-    HRESULT hr = S_OK;
-    int i;
-
-    if (!pOutputQueue->pInputPin->pin.peer || !pOutputQueue->pInputPin->pMemInputPin)
-        return VFW_E_NOT_CONNECTED;
-
-    if (!pOutputQueue->hThread)
-    {
-        IMemInputPin_AddRef(pOutputQueue->pInputPin->pMemInputPin);
-        hr = IMemInputPin_ReceiveMultiple(pOutputQueue->pInputPin->pMemInputPin,ppSamples, nSamples, nSamplesProcessed);
-        IMemInputPin_Release(pOutputQueue->pInputPin->pMemInputPin);
-    }
-    else
-    {
-        EnterCriticalSection(&pOutputQueue->csQueue);
-        *nSamplesProcessed = 0;
-
-        for (i = 0; i < nSamples; i++)
-        {
-            QueuedEvent *qev = HeapAlloc(GetProcessHeap(),0,sizeof(QueuedEvent));
-            if (!qev)
-            {
-                ERR("Out of Memory\n");
-                hr = E_OUTOFMEMORY;
-                break;
-            }
-            qev->type = SAMPLE_PACKET;
-            qev->pSample = ppSamples[i];
-            IMediaSample_AddRef(ppSamples[i]);
-            list_add_tail(&pOutputQueue->SampleList, &qev->entry);
-            (*nSamplesProcessed)++;
-        }
-
-        if (!pOutputQueue->bBatchExact || list_count(&pOutputQueue->SampleList) >= pOutputQueue->lBatchSize)
-            SetEvent(pOutputQueue->hProcessQueue);
-        LeaveCriticalSection(&pOutputQueue->csQueue);
-    }
-    return hr;
-}
-
-HRESULT WINAPI OutputQueue_Receive(OutputQueue *pOutputQueue, IMediaSample *pSample)
-{
-    LONG processed;
-    return OutputQueue_ReceiveMultiple(pOutputQueue,&pSample,1,&processed);
-}
-
-VOID WINAPI OutputQueue_SendAnyway(OutputQueue *pOutputQueue)
-{
-    if (pOutputQueue->hThread)
-    {
-        EnterCriticalSection(&pOutputQueue->csQueue);
-        if (!list_empty(&pOutputQueue->SampleList))
-        {
-            pOutputQueue->bSendAnyway = TRUE;
-            SetEvent(pOutputQueue->hProcessQueue);
-        }
-        LeaveCriticalSection(&pOutputQueue->csQueue);
-    }
-}
-
-VOID WINAPI OutputQueue_EOS(OutputQueue *pOutputQueue)
-{
-    IPin *peer;
-
-    EnterCriticalSection(&pOutputQueue->csQueue);
-    if (pOutputQueue->hThread)
-    {
-        QueuedEvent *qev = HeapAlloc(GetProcessHeap(),0,sizeof(QueuedEvent));
-        if (!qev)
-        {
-            ERR("Out of Memory\n");
-            LeaveCriticalSection(&pOutputQueue->csQueue);
-            return;
-        }
-        qev->type = EOS_PACKET;
-        qev->pSample = NULL;
-        list_add_tail(&pOutputQueue->SampleList, &qev->entry);
-    }
-    else if ((peer = pOutputQueue->pInputPin->pin.peer))
-        IPin_EndOfStream(peer);
-    LeaveCriticalSection(&pOutputQueue->csQueue);
-    /* Covers sending the Event to the worker Thread */
-    OutputQueue_SendAnyway(pOutputQueue);
-}
-
-DWORD WINAPI OutputQueueImpl_ThreadProc(OutputQueue *pOutputQueue)
-{
-    do
-    {
-        EnterCriticalSection(&pOutputQueue->csQueue);
-        if (!list_empty(&pOutputQueue->SampleList) &&
-            (!pOutputQueue->bBatchExact ||
-            list_count(&pOutputQueue->SampleList) >= pOutputQueue->lBatchSize ||
-            pOutputQueue->bSendAnyway
-            )
-           )
-        {
-            while (!list_empty(&pOutputQueue->SampleList))
-            {
-                IMediaSample **ppSamples;
-                LONG nSamples;
-                LONG nSamplesProcessed;
-                struct list *cursor, *cursor2;
-                int i = 0;
-
-                /* First Pass Process Samples */
-                i = list_count(&pOutputQueue->SampleList);
-                ppSamples = HeapAlloc(GetProcessHeap(),0,sizeof(IMediaSample*) * i);
-                nSamples = 0;
-                LIST_FOR_EACH_SAFE(cursor, cursor2, &pOutputQueue->SampleList)
-                {
-                    QueuedEvent *qev = LIST_ENTRY(cursor, QueuedEvent, entry);
-                    if (qev->type == SAMPLE_PACKET)
-                        ppSamples[nSamples++] = qev->pSample;
-                    else
-                        break;
-                    list_remove(cursor);
-                    HeapFree(GetProcessHeap(),0,qev);
-                }
-
-                if (pOutputQueue->pInputPin->pin.peer && pOutputQueue->pInputPin->pMemInputPin)
-                {
-                    IMemInputPin_AddRef(pOutputQueue->pInputPin->pMemInputPin);
-                    LeaveCriticalSection(&pOutputQueue->csQueue);
-                    IMemInputPin_ReceiveMultiple(pOutputQueue->pInputPin->pMemInputPin, ppSamples, nSamples, &nSamplesProcessed);
-                    EnterCriticalSection(&pOutputQueue->csQueue);
-                    IMemInputPin_Release(pOutputQueue->pInputPin->pMemInputPin);
-                }
-                for (i = 0; i < nSamples; i++)
-                    IMediaSample_Release(ppSamples[i]);
-                HeapFree(GetProcessHeap(),0,ppSamples);
-
-                /* Process Non-Samples */
-                LIST_FOR_EACH_SAFE(cursor, cursor2, &pOutputQueue->SampleList)
-                {
-                    QueuedEvent *qev = LIST_ENTRY(cursor, QueuedEvent, entry);
-                    if (qev->type == EOS_PACKET)
-                    {
-                        IPin *peer;
-                        if ((peer = pOutputQueue->pInputPin->pin.peer))
-                            IPin_EndOfStream(peer);
-                    }
-                    else if (qev->type == SAMPLE_PACKET)
-                        break;
-                    else
-                        FIXME("Unhandled Event type %i\n",qev->type);
-                    list_remove(cursor);
-                    HeapFree(GetProcessHeap(),0,qev);
-                }
-            }
-            pOutputQueue->bSendAnyway = FALSE;
-        }
-        LeaveCriticalSection(&pOutputQueue->csQueue);
-        WaitForSingleObject(pOutputQueue->hProcessQueue, INFINITE);
-    }
-    while (!pOutputQueue->bTerminate);
-    return S_OK;
-}
-- 
2.32.0




More information about the wine-devel mailing list