ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
April 2009
----- 2025 -----
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
25 participants
476 discussions
Start a n
N
ew thread
[gedmurphy] 40461: Move the downloader tool into trunk
by gedmurphy@svn.reactos.org
Author: gedmurphy Date: Sat Apr 11 20:51:57 2009 New Revision: 40461 URL:
http://svn.reactos.org/svn/reactos?rev=40461&view=rev
Log: Move the downloader tool into trunk Added: trunk/reactos/base/applications/downloader/ - copied from r40456, trunk/rosapps/applications/downloader/ Modified: trunk/reactos/base/applications/applications.rbuild trunk/reactos/boot/bootdata/packages/reactos.dff Modified: trunk/reactos/base/applications/applications.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/applicat…
============================================================================== --- trunk/reactos/base/applications/applications.rbuild [iso-8859-1] (original) +++ trunk/reactos/base/applications/applications.rbuild [iso-8859-1] Sat Apr 11 20:51:57 2009 @@ -16,6 +16,9 @@ <directory name="control"> <xi:include href="control/control.rbuild" /> </directory> + <directory name="downloader"> + <xi:include href="downloader/downloader.rbuild" /> + </directory> <directory name="dxdiag"> <xi:include href="dxdiag/dxdiag.rbuild" /> </directory> Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Sat Apr 11 20:51:57 2009 @@ -41,6 +41,8 @@ base\applications\cmdutils\more\more.exe 1 base\applications\cmdutils\xcopy\xcopy.exe 1 base\applications\control\control.exe 1 +base\applications\downloader\downloader.exe 1 +base\applications\downloader\downloader.xml 1 base\applications\dxdiag\dxdiag.exe 1 base\applications\fontview\fontview.exe 1 base\applications\mscutils\devmgmt\devmgmt.exe 1
15 years, 9 months
1
0
0
0
[gschneider] 40460: - Fix a memory overwrite that was uncovered by recent win32k memory allocation changes (r40268 + r40269) - Fixes a crash in current QiP Infium that was hidden before, bug #4361
by gschneider@svn.reactos.org
Author: gschneider Date: Sat Apr 11 20:48:47 2009 New Revision: 40460 URL:
http://svn.reactos.org/svn/reactos?rev=40460&view=rev
Log: - Fix a memory overwrite that was uncovered by recent win32k memory allocation changes (r40268 + r40269) - Fixes a crash in current QiP Infium that was hidden before, bug #4361 Modified: trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c Modified: trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/di…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/dib/dib32bpp.c [iso-8859-1] Sat Apr 11 20:48:47 2009 @@ -257,7 +257,7 @@ { Dest32 = (DWORD *) DestBits + (BltInfo->DestRect.right - BltInfo->DestRect.left - 1); Source32 = (DWORD *) SourceBits + (BltInfo->DestRect.right - BltInfo->DestRect.left - 1); - for (i = BltInfo->DestRect.right; BltInfo->DestRect.left <= i; i--) + for (i = BltInfo->DestRect.right - 1; BltInfo->DestRect.left <= i; i--) { *Dest32-- = XLATEOBJ_iXlate(BltInfo->XlateSourceToDest, *Source32--); }
15 years, 9 months
1
0
0
0
[spetreolle] 40459: fix cmd build
by spetreolle@svn.reactos.org
Author: spetreolle Date: Sat Apr 11 20:37:08 2009 New Revision: 40459 URL:
http://svn.reactos.org/svn/reactos?rev=40459&view=rev
Log: fix cmd build Modified: trunk/reactos/base/shell/cmd/cmd.h Modified: trunk/reactos/base/shell/cmd/cmd.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/cmd.h?rev=4…
============================================================================== --- trunk/reactos/base/shell/cmd/cmd.h [iso-8859-1] (original) +++ trunk/reactos/base/shell/cmd/cmd.h [iso-8859-1] Sat Apr 11 20:37:08 2009 @@ -65,7 +65,7 @@ extern SHORT maxx; extern SHORT maxy; extern OSVERSIONINFO osvi; - +extern BOOL bUnicodeOutput; /* Prototypes for ALIAS.C */
15 years, 9 months
1
0
0
0
[cgutman] 40458: - Revert 40446 and 40447 - More research needs to be done on when exactly we should be locking
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Apr 11 18:00:48 2009 New Revision: 40458 URL:
http://svn.reactos.org/svn/reactos?rev=40458&view=rev
Log: - Revert 40446 and 40447 - More research needs to be done on when exactly we should be locking Modified: trunk/reactos/drivers/network/ndis/ndis/miniport.c trunk/reactos/drivers/network/ndis/ndis/protocol.c Modified: trunk/reactos/drivers/network/ndis/ndis/miniport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sat Apr 11 18:00:48 2009 @@ -355,9 +355,11 @@ NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); - + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); + + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); Adapter->NdisMiniportBlock.PendingRequest = NULL; + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); if( MacBlock->Binding->RequestCompleteHandler ) { (*MacBlock->Binding->RequestCompleteHandler)( @@ -365,7 +367,7 @@ Request, Status); } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); } VOID NTAPI @@ -382,7 +384,6 @@ * Status = Status of send operation */ { - PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle; PADAPTER_BINDING AdapterBinding; KIRQL OldIrql; @@ -390,12 +391,12 @@ AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0]; - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); (*AdapterBinding->ProtocolBinding->Chars.SendCompleteHandler)( AdapterBinding->NdisOpenBlock.ProtocolBindingContext, Packet, Status); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); } @@ -416,7 +417,6 @@ IN NDIS_STATUS Status, IN UINT BytesTransferred) { - PLOGICAL_ADAPTER Adapter = MiniportAdapterHandle; PADAPTER_BINDING AdapterBinding; KIRQL OldIrql; @@ -424,13 +424,13 @@ AdapterBinding = (PADAPTER_BINDING)Packet->Reserved[0]; - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); (*AdapterBinding->ProtocolBinding->Chars.TransferDataCompleteHandler)( AdapterBinding->NdisOpenBlock.ProtocolBindingContext, Packet, Status, BytesTransferred); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); } @@ -605,7 +605,7 @@ NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); /* call the miniport's queryinfo handler */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.QueryInformationHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, Oid, @@ -613,7 +613,7 @@ Size, BytesWritten, &BytesNeeded); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); /* FIXME: Wait in pending case! */ @@ -634,11 +634,11 @@ BOOLEAN Ret = FALSE; KIRQL OldIrql; - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); if (Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.CheckForHangHandler) Ret = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.CheckForHangHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); return Ret; } @@ -667,14 +667,16 @@ NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0); NdisMIndicateStatusComplete(Adapter); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, AddressingReset); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); Adapter->NdisMiniportBlock.ResetStatus = Status; - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); + + KeLowerIrql(OldIrql); if (Status != NDIS_STATUS_PENDING) { NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_END, NULL, 0); @@ -852,9 +854,11 @@ KIRQL OldIrql; NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); - + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); + + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); Adapter->NdisMiniportBlock.PendingRequest = NdisRequest; + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); switch (NdisRequest->RequestType) { @@ -883,10 +887,12 @@ } if (Status != NDIS_STATUS_PENDING) { + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); Adapter->NdisMiniportBlock.PendingRequest = NULL; - } - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); + } + + KeLowerIrql(OldIrql); return Status; } @@ -903,10 +909,12 @@ { PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle; + KIRQL OldIrql; ASSERT(Adapter); - /* This isn't a handler supplied by the miniport */ + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); if (Adapter->NdisMiniportBlock.SetCompleteHandler) (Adapter->NdisMiniportBlock.SetCompleteHandler)(MiniportAdapterHandle, Status); + KeLowerIrql(OldIrql); } @@ -922,10 +930,12 @@ { PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle; + KIRQL OldIrql; ASSERT(Adapter); - /* This isn't a handler supplied by the miniport */ + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); if( Adapter->NdisMiniportBlock.QueryCompleteHandler ) (Adapter->NdisMiniportBlock.QueryCompleteHandler)(MiniportAdapterHandle, Status); + KeLowerIrql(OldIrql); } VOID @@ -970,11 +980,13 @@ else { /* SendPackets is called at DISPATCH_LEVEL for all serialized miniports */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); + { NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's SendPackets handler\n")); (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, (PPNDIS_PACKET)&WorkItemContext, 1); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); + } + KeLowerIrql(RaiseOldIrql); NdisStatus = NDIS_GET_PACKET_STATUS((PNDIS_PACKET)WorkItemContext); if( NdisStatus == NDIS_STATUS_RESOURCES ) { @@ -996,13 +1008,13 @@ else { /* Send is called at DISPATCH_LEVEL for all serialized miniports */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n")); NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, (PNDIS_PACKET)WorkItemContext, ((PNDIS_PACKET)WorkItemContext)->Private.Flags); NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n")); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); + KeLowerIrql(RaiseOldIrql); if( NdisStatus == NDIS_STATUS_RESOURCES ) { MiniQueueWorkItem(Adapter, WorkItemType, WorkItemContext, TRUE); break; @@ -1034,14 +1046,19 @@ NdisMIndicateStatus(Adapter, NDIS_STATUS_RESET_START, NULL, 0); NdisMIndicateStatusComplete(Adapter); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.ResetHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, &AddressingReset); - Adapter->NdisMiniportBlock.ResetStatus = NdisStatus; - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + if (NdisStatus == NDIS_STATUS_PENDING) + { + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); + Adapter->NdisMiniportBlock.ResetStatus = NDIS_STATUS_PENDING; + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); + } + + KeLowerIrql(OldIrql); if (NdisStatus != NDIS_STATUS_PENDING) MiniResetComplete(Adapter, NdisStatus, AddressingReset); Modified: trunk/reactos/drivers/network/ndis/ndis/protocol.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Sat Apr 11 18:00:48 2009 @@ -204,11 +204,13 @@ NdisStatus = NDIS_STATUS_PENDING; } else { /* SendPackets is called at DISPATCH_LEVEL for all serialized miniports */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); + { NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's SendPackets handler\n")); (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, &Packet, 1); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); + } + KeLowerIrql(RaiseOldIrql); NdisStatus = NDIS_GET_PACKET_STATUS(Packet); if (NdisStatus == NDIS_STATUS_RESOURCES) { @@ -227,12 +229,12 @@ NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n")); } else { /* Send is called at DISPATCH_LEVEL for all serialized miniports */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n")); NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, Packet, Packet->Private.Flags); NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n")); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); + KeLowerIrql(RaiseOldIrql); if (NdisStatus == NDIS_STATUS_RESOURCES) { MiniQueueWorkItem(Adapter, NdisWorkItemSend, Packet, TRUE); @@ -272,6 +274,8 @@ Adapter = AdapterBinding->Adapter; ASSERT(Adapter); + + /* if the following is not true, KeRaiseIrql() below will break */ ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL); /* XXX what is this crazy black magic? */ @@ -322,10 +326,10 @@ else { /* SendPackets is called at DISPATCH_LEVEL for all serialized miniports */ - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, PacketArray, NumberOfPackets); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); + KeLowerIrql(RaiseOldIrql); for (i = 0; i < NumberOfPackets; i++) { NdisStatus = NDIS_GET_PACKET_STATUS(PacketArray[i]); @@ -349,15 +353,15 @@ else { /* Send is called at DISPATCH_LEVEL for all serialized miniports */ + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); for (i = 0; i < NumberOfPackets; i++) { - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &RaiseOldIrql); NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( Adapter->NdisMiniportBlock.MiniportAdapterContext, PacketArray[i], PacketArray[i]->Private.Flags); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, RaiseOldIrql); if (NdisStatus != NDIS_STATUS_PENDING) MiniSendComplete(Adapter, PacketArray[i], NdisStatus); } + KeLowerIrql(RaiseOldIrql); } } } @@ -404,7 +408,7 @@ return NDIS_STATUS_SUCCESS; } - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); Status = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.TransferDataHandler)( Packet, @@ -414,7 +418,7 @@ ByteOffset, BytesToTransfer); - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeLowerIrql(OldIrql); return Status; }
15 years, 9 months
1
0
0
0
[cfinck] 40457: Alter "userenv.spec" to match the output of "dumpbin /exports" for the Windows Server 2003 SP1 userenv.dll exactly. I found out the real function names of the functions exported by ordinal and their parameter sizes in a PDB file. Some functions we didn't have yet are also documented in MSDN, so I could get the exact parameters. The comment beside each stub details each function as far as I could find out.
by cfinck@svn.reactos.org
Author: cfinck Date: Sat Apr 11 17:00:00 2009 New Revision: 40457 URL:
http://svn.reactos.org/svn/reactos?rev=40457&view=rev
Log: Alter "userenv.spec" to match the output of "dumpbin /exports" for the Windows Server 2003 SP1 userenv.dll exactly. I found out the real function names of the functions exported by ordinal and their parameter sizes in a PDB file. Some functions we didn't have yet are also documented in MSDN, so I could get the exact parameters. The comment beside each stub details each function as far as I could find out. Modified: trunk/reactos/dll/win32/userenv/userenv.spec Modified: trunk/reactos/dll/win32/userenv/userenv.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/userenv/userenv.…
============================================================================== --- trunk/reactos/dll/win32/userenv/userenv.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/userenv/userenv.spec [iso-8859-1] Sat Apr 11 17:00:00 2009 @@ -1,17 +1,51 @@ - @ stdcall CreateEnvironmentBlock(ptr ptr long) - @ stdcall DestroyEnvironmentBlock(ptr) - @ stdcall ExpandEnvironmentStringsForUserA(ptr str ptr long) - @ stdcall ExpandEnvironmentStringsForUserW(ptr wstr ptr long) - @ stdcall GetProfilesDirectoryA(ptr ptr) - @ stdcall GetProfilesDirectoryW(ptr ptr) - @ stub GetProfileType - @ stdcall GetUserProfileDirectoryA(ptr ptr ptr) - @ stdcall GetUserProfileDirectoryW(ptr ptr ptr) - @ stdcall LoadUserProfileA(ptr ptr) - @ stdcall LoadUserProfileW(ptr ptr) - @ stdcall RegisterGPNotification(long long) - @ stdcall UnloadUserProfile(ptr ptr) - @ stdcall UnregisterGPNotification(long) +132 stdcall CreateEnvironmentBlock(ptr ptr long) +133 stdcall DeleteProfileA(str str str) +134 stdcall DeleteProfileW(wstr wstr wstr) +176 stdcall DestroyEnvironmentBlock(ptr) +177 stub DllCanUnloadNow #stdcall DllCanUnloadNow() +178 stub DllGetClassObject #stdcall DllGetClassObject(ptr ptr ptr) +179 stub DllInstall #stdcall DllInstall(long wstr) +180 stub DllRegisterServer #stdcall DllRegisterServer() +181 stub DllUnregisterServer #stdcall DllUnregisterServer() +182 stdcall EnterCriticalPolicySection(long) +183 stdcall ExpandEnvironmentStringsForUserA(ptr str str long) +184 stdcall ExpandEnvironmentStringsForUserW(ptr wstr wstr long) +185 stub ForceSyncFgPolicy #stdcall ForceSyncFgPolicy(4) +186 stub FreeGPOListA #stdcall FreeGPOListA(ptr) +187 stub FreeGPOListW #stdcall FreeGPOListW(ptr) +188 stub GenerateRsopPolicy #stdcall GenerateRsopPolicy(48) +189 stdcall GetAllUsersProfileDirectoryA(str ptr) +190 stdcall GetAllUsersProfileDirectoryW(wstr ptr) +191 stub GetAppliedGPOListA #stdcall GetAppliedGPOListA(long str ptr ptr ptr) +192 stub GetAppliedGPOListW #stdcall GetAppliedGPOListW(long wstr ptr ptr ptr) +193 stdcall GetDefaultUserProfileDirectoryA(str ptr) +194 stdcall GetDefaultUserProfileDirectoryW(wstr ptr) +195 stub GetGPOListA #stdcall GetGPOListA(ptr str str str long ptr) +196 stub GetGPOListW #stdcall GetGPOListW(ptr wstr wstr wstr long ptr) +197 stub GetNextFgPolicyRefreshInfo #stdcall GetNextFgPolicyRefreshInfo(8) +198 stub GetPreviousFgPolicyRefreshInfo #stdcall GetPreviousFgPolicyRefreshInfo(8) +199 stub GetProfileType #stdcall GetProfileType(ptr) +202 stdcall GetProfilesDirectoryA(str ptr) +203 stdcall GetProfilesDirectoryW(wstr ptr) +204 stdcall GetUserProfileDirectoryA(ptr str ptr) +205 stdcall GetUserProfileDirectoryW(ptr wstr ptr) +206 stdcall LeaveCriticalPolicySection(ptr) +207 stdcall LoadUserProfileA(ptr ptr) +208 stdcall LoadUserProfileW(ptr ptr) +209 stub ProcessGroupPolicyCompleted #stdcall ProcessGroupPolicyCompleted(ptr ptr long) +210 stub ProcessGroupPolicyCompletedEx #stdcall ProcessGroupPolicyCompletedEx(ptr ptr long ptr) +211 stdcall RefreshPolicy(long) +212 stdcall RefreshPolicyEx(long long) +213 stdcall RegisterGPNotification(ptr long) +214 stub RsopAccessCheckByType #stdcall RsopAccessCheckByType(ptr ptr ptr long ptr long ptr ptr ptr ptr ptr) +215 stub RsopFileAccessCheck #stdcall RsopFileAccessCheck(wstr ptr long ptr ptr) +216 stub RsopLoggingEnabled #stdcall RsopLoggingEnabled() +217 stub RsopResetPolicySettingStatus #stdcall RsopResetPolicySettingStatus(long ptr ptr) +218 stub RsopSetPolicySettingStatus #stdcall RsopSetPolicySettingStatus(long ptr ptr long ptr) +219 stdcall UnloadUserProfile(ptr ptr) +220 stdcall UnregisterGPNotification(ptr) +221 stdcall WaitForMachinePolicyForegroundProcessing() +222 stdcall WaitForUserPolicyForegroundProcessing() 100 stdcall -noname InitializeProfiles() 101 stdcall -noname CreateGroupA(str long) 102 stdcall -noname CreateGroupW(wstr long) @@ -29,15 +63,61 @@ 114 stdcall -noname AddDesktopItemW(long wstr wstr wstr long wstr long long) 115 stdcall -noname DeleteDesktopItemA(long str) 116 stdcall -noname DeleteDesktopItemW(long wstr) - @ stdcall EnterCriticalPolicySection(long) - @ stdcall GetAllUsersProfileDirectoryA(str ptr) - @ stdcall GetAllUsersProfileDirectoryW(wstr ptr) - @ stdcall GetDefaultUserProfileDirectoryA(str ptr) - @ stdcall GetDefaultUserProfileDirectoryW(wstr ptr) - @ stdcall LeaveCriticalPolicySection(long) - @ stdcall RefreshPolicy(long) - @ stdcall RefreshPolicyEx(long long) - @ stdcall WaitForUserPolicyForegroundProcessing() - @ stdcall WaitForMachinePolicyForegroundProcessing() - @ stdcall DeleteProfileW(wstr wstr wstr) - @ stdcall DeleteProfileA(str str str) +117 stub -noname ApplyGroupPolicy #stdcall -noname ApplyGroupPolicy(20) +118 stub -noname ShutdownGPOProcessing #stdcall -noname ShutdownGPOProcessing(4) +119 stub -noname CreateLinkFileA #stdcall -noname CreateLinkFileA(40) +120 stub -noname CreateLinkFileW #stdcall -noname CreateLinkFileW(40) +121 stub -noname DeleteLinkFileA #stdcall -noname DeleteLinkFileA(16) +122 stub -noname DeleteLinkFileW #stdcall -noname DeleteLinkFileW(16) +123 stub -noname CopyProfileDirectoryExA #stdcall -noname CopyProfileDirectoryExA(20) +124 stub -noname CopyProfileDirectoryExW #stdcall -noname CopyProfileDirectoryExW(20) +125 stub -noname GetSystemTempDirectoryA #stdcall -noname GetSystemTempDirectoryA(8) +126 stub -noname GetSystemTempDirectoryW #stdcall -noname GetSystemTempDirectoryW(8) +127 stub -noname MigrateNT4ToNT5 #stdcall -noname MigrateNT4ToNT5() +128 stub -noname ResetUserSpecialFolderPaths #stdcall -noname ResetUserSpecialFolderPaths() +129 stub -noname ApplySystemPolicyA #stdcall -noname ApplySystemPolicyA(24) +130 stub -noname ApplySystemPolicyW #stdcall -noname ApplySystemPolicyW(24) +131 stub -noname DetermineProfilesLocation #stdcall -noname DetermineProfilesLocation(4) +135 stub -noname PingComputer #stdcall -noname PingComputer(8) +136 stub -noname CreateGroupExA #stdcall -noname CreateGroupExA(16) +137 stub -noname CreateGroupExW #stdcall -noname CreateGroupExW(16) +138 stub -noname CreateLinkFileExA #stdcall -noname CreateLinkFileExA(48) +139 stub -noname CreateLinkFileExW #stdcall -noname CreateLinkFileExW(48) +140 stub -noname InitializeUserProfile #stdcall -noname InitializeUserProfile() +#141 cdecl -noname RsopSidsFromToken@@YGJPAXPAPAU_TOKEN_GROUPS@@@Z +142 stub -noname GetUserSid #stdcall -noname GetUserSid(4) +143 stub -noname SecureUserProfiles #stdcall -noname SecureUserProfiles() +144 stub -noname EnterUserProfileLock #stdcall -noname EnterUserProfileLock(4) +145 stub -noname LeaveUserProfileLock #stdcall -noname LeaveUserProfileLock(4) +146 stub -noname CheckAccessForPolicyGeneration #stdcall -noname CheckAccessForPolicyGeneration(20) +147 stub -noname GetGroupPolicyNetworkName #stdcall -noname GetGroupPolicyNetworkName(8) +148 stub -noname GetUserAppDataPathA #stdcall -noname GetUserAppDataPathA(12) +149 stub -noname GetUserAppDataPathW #stdcall -noname GetUserAppDataPathW(12) +150 stub -noname SignalUserPolicyForegroundProcessingDone #stdcall -noname SignalUserPolicyForegroundProcessingDone() +151 stub -noname SignalMachinePolicyForegroundProcessingDone #stdcall -noname SignalMachinePolicyForegroundProcessingDone() +152 stub -noname IsSyncForegroundPolicyRefresh #stdcall -noname IsSyncForegroundPolicyRefresh(8) +153 stub -noname CreateUserProfileExA #stdcall -noname CreateUserProfileExA(24) +154 stub -noname CreateUserProfileExW #stdcall -noname CreateUserProfileExW(24) +155 stub -noname CopySystemProfile #stdcall -noname CopySystemProfile(4) +156 stub -noname GetUserProfileDirFromSidA #stdcall -noname GetUserProfileDirFromSidA(12) +157 stub -noname GetUserProfileDirFromSidW #stdcall -noname GetUserProfileDirFromSidW(12) +158 stub -noname SetNextFgPolicyRefreshInfo #stdcall -noname SetNextFgPolicyRefreshInfo(12) +159 stub -noname TranslateNameXForest #stdcall -noname TranslateNameXForest(20) +160 stub -noname AllocGpContainer #stdcall -noname AllocGpContainer(60) +161 stub -noname AddGPO #stdcall -noname AddGPO(84) +162 stub -noname GetWbemServices #stdcall -noname GetWbemServices(20) +163 stub -noname FilterGPOs #stdcall -noname FilterGPOs(8) +164 stub -noname ProcessMachAndUserGpoList #stdcall -noname ProcessMachAndUserGpoList(48) +165 stub -noname GPOExceptionFilter #stdcall -noname GPOExceptionFilter(4) +166 stub -noname LogExtSessionStatus #stdcall -noname LogExtSessionStatus(16) +167 stub -noname UpdateExtSessionStatus #stdcall -noname UpdateExtSessionStatus(16) +168 stub -noname UnloadGPExtensions #stdcall -noname UnloadGPExtensions(4) +169 stub -noname FreeGpoInfo #stdcall -noname FreeGpoInfo(4) +170 stub -noname LogSessionData #stdcall -noname LogSessionData(8) +171 stub -noname LogGpoData #stdcall -noname LogGpoData(4) +172 stub -noname ReadGPExtensions #stdcall -noname ReadGPExtensions(4) +173 stub -noname CheckForSkippedExtensions #stdcall -noname CheckForSkippedExtensions(8) +174 stub -noname SetupGPOFilter #stdcall -noname SetupGPOFilter(4) +175 stub -noname CheckXForestLogon #stdcall -noname CheckXForestLogon(4) +200 stub -noname CreateURLFile #stdcall -noname CreateURLFile(36) +201 stub -noname DeleteURLFile #stdcall -noname DeleteURLFile(16)
15 years, 9 months
1
0
0
0
[dchapyshev] 40456: - Sync gdiplus, iccvid, imaadp32.acm, inetcomm with Wine 1.1.19 - Remove unneeded gdiplus_ros.diff
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sat Apr 11 12:58:56 2009 New Revision: 40456 URL:
http://svn.reactos.org/svn/reactos?rev=40456&view=rev
Log: - Sync gdiplus, iccvid, imaadp32.acm, inetcomm with Wine 1.1.19 - Remove unneeded gdiplus_ros.diff Removed: trunk/reactos/dll/win32/gdiplus/gdiplus_ros.diff Modified: trunk/reactos/dll/win32/gdiplus/gdiplus.c trunk/reactos/dll/win32/gdiplus/gdiplus.spec trunk/reactos/dll/win32/gdiplus/gdiplus_private.h trunk/reactos/dll/win32/iccvid/iccvid.c trunk/reactos/dll/win32/imaadp32.acm/imaadp32.c trunk/reactos/dll/win32/inetcomm/internettransport.c Modified: trunk/reactos/dll/win32/gdiplus/gdiplus.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus.…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus.c [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -214,7 +214,7 @@ unstretch_angle(&startAngle, x2 / 2.0, y2 / 2.0); unstretch_angle(&endAngle, x2 / 2.0, y2 / 2.0); - count = ceil(fabs(endAngle - startAngle) / M_PI_2) * 3 + 1; + count = ceilf(fabs(endAngle - startAngle) / M_PI_2) * 3 + 1; /* don't make more than a full circle */ count = min(MAX_ARC_PTS, count); Modified: trunk/reactos/dll/win32/gdiplus/gdiplus.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus.…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus.spec [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -47,7 +47,7 @@ @ stdcall GdipBitmapUnlockBits(ptr ptr) @ stdcall GdipClearPathMarkers(ptr) @ stub GdipCloneBitmapArea -@ stub GdipCloneBitmapAreaI +@ stdcall GdipCloneBitmapAreaI(long long long long long ptr ptr) @ stdcall GdipCloneBrush(ptr ptr) @ stdcall GdipCloneCustomLineCap(ptr ptr) @ stdcall GdipCloneFont(ptr ptr) Modified: trunk/reactos/dll/win32/gdiplus/gdiplus_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus_…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus_private.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus_private.h [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -61,7 +61,7 @@ static inline INT roundr(REAL x) { - return (INT) floor(x + 0.5); + return (INT) floorf(x + 0.5); } static inline REAL deg2rad(REAL degrees) Removed: trunk/reactos/dll/win32/gdiplus/gdiplus_ros.diff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdiplus/gdiplus_…
============================================================================== --- trunk/reactos/dll/win32/gdiplus/gdiplus_ros.diff [iso-8859-1] (original) +++ trunk/reactos/dll/win32/gdiplus/gdiplus_ros.diff (removed) @@ -1,58 +1,0 @@ -Index: gdiplus.c -=================================================================== -RCS file: /home/wine/wine/dlls/gdiplus/gdiplus.c,v -retrieving revision 1.15 -diff -u -r1.15 gdiplus.c ---- gdiplus.c 8 Jan 2008 16:22:52 -0000 1.15 -+++ gdiplus.c 23 Mar 2008 21:21:23 -0000 -@@ -200,7 +200,7 @@ - unstretch_angle(&startAngle, x2 / 2.0, y2 / 2.0); - unstretch_angle(&endAngle, x2 / 2.0, y2 / 2.0); - -- count = ceilf(fabs(endAngle - startAngle) / M_PI_2) * 3 + 1; -+ count = ceil(fabs(endAngle - startAngle) / M_PI_2) * 3 + 1; - /* don't make more than a full circle */ - count = min(MAX_ARC_PTS, count); - -Index: gdiplus_private.h -=================================================================== -RCS file: /home/wine/wine/dlls/gdiplus/gdiplus_private.h,v -retrieving revision 1.58 -diff -u -r1.58 gdiplus_private.h ---- gdiplus_private.h 15 Aug 2007 09:36:31 -0000 1.58 -+++ gdiplus_private.h 23 Mar 2008 09:25:54 -0000 -@@ -46,7 +46,7 @@ - - static inline INT roundr(REAL x) - { -- return (INT) floorf(x + 0.5); -+ return (INT) floor(x + 0.5); - } - - static inline REAL deg2rad(REAL degrees) -Index: graphics.c -=================================================================== -RCS file: /home/wine/wine/dlls/gdiplus/graphics.c,v -retrieving revision 1.102 -diff -u -r1.102 graphics.c ---- graphics.c 1 Mar 2008 12:15:48 -0000 1.102 -+++ graphics.c 23 Mar 2008 21:21:23 -0000 -@@ -1464,7 +1464,7 @@ - DeleteObject(SelectObject(graphics->hdc, CreateFontIndirectW(&lfw))); - - for(i = 0, j = 0; i < length; i++){ -- if(!isprintW(string[i]) && (string[i] != '\n')) -+ if(!isprint(string[i]) && (string[i] != '\n')) - continue; - - stringdup[j] = string[i]; -@@ -1873,7 +1873,7 @@ - nwidth = nheight = INT_MAX; - - for(i = 0, j = 0; i < length; i++){ -- if(!isprintW(string[i]) && (string[i] != '\n')) -+ if(!isprint(string[i]) && (string[i] != '\n')) - continue; - - stringdup[j] = string[i]; - Modified: trunk/reactos/dll/win32/iccvid/iccvid.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/iccvid/iccvid.c?…
============================================================================== --- trunk/reactos/dll/win32/iccvid/iccvid.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/iccvid/iccvid.c [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -57,6 +57,7 @@ static HINSTANCE ICCVID_hModule; #define ICCVID_MAGIC mmioFOURCC('c', 'v', 'i', 'd') +#define compare_fourcc(fcc1, fcc2) (((fcc1)^(fcc2))&~0x20202020) #define DBUG 0 #define MAX_STRIPS 32 @@ -975,7 +976,7 @@ TRACE("Opened\n"); - if (icinfo && icinfo->fccType != ICTYPE_VIDEO) return 0; + if (icinfo && compare_fourcc(icinfo->fccType, ICTYPE_VIDEO)) return 0; info = heap_alloc( sizeof (ICCVID_Info) ); if( info ) Modified: trunk/reactos/dll/win32/imaadp32.acm/imaadp32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/imaadp32.acm/ima…
============================================================================== --- trunk/reactos/dll/win32/imaadp32.acm/imaadp32.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/imaadp32.acm/imaadp32.c [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -120,7 +120,50 @@ return i; } + switch (wfx->wFormatTag) + { + case WAVE_FORMAT_PCM: + if(3 > wfx->nChannels && + wfx->nChannels > 0 && + wfx->nAvgBytesPerSec == 2 * wfx->nSamplesPerSec * wfx->nChannels && + wfx->nBlockAlign == 2 * wfx->nChannels && + wfx->wBitsPerSample == 16) + return hi; + break; + case WAVE_FORMAT_IMA_ADPCM: + if(3 > wfx->nChannels && + wfx->nChannels > 0 && + wfx->wBitsPerSample == 4 && + wfx->cbSize == 2) + return hi; + break; + } + return 0xFFFFFFFF; +} + +static void init_wfx_ima_adpcm(IMAADPCMWAVEFORMAT* awfx/*, DWORD nba*/) +{ + register WAVEFORMATEX* pwfx = &awfx->wfx; + + /* we assume wFormatTag, nChannels, nSamplesPerSec and wBitsPerSample + * have been initialized... */ + + if (pwfx->wFormatTag != WAVE_FORMAT_IMA_ADPCM) {FIXME("wrong FT\n"); return;} + if (ADPCM_GetFormatIndex(pwfx) == 0xFFFFFFFF) {FIXME("wrong fmt\n"); return;} + + switch (pwfx->nSamplesPerSec) + { + case 8000: pwfx->nBlockAlign = 256 * pwfx->nChannels; break; + case 11025: pwfx->nBlockAlign = 256 * pwfx->nChannels; break; + case 22050: pwfx->nBlockAlign = 512 * pwfx->nChannels; break; + case 44100: pwfx->nBlockAlign = 1024 * pwfx->nChannels; break; + default: /*pwfx->nBlockAlign = nba;*/ break; + } + pwfx->cbSize = sizeof(WORD); + + awfx->wSamplesPerBlock = (pwfx->nBlockAlign - (4 * pwfx->nChannels) * 2) / pwfx->nChannels + 1; + pwfx->nAvgBytesPerSec = (pwfx->nSamplesPerSec * pwfx->nBlockAlign) / awfx->wSamplesPerBlock; } /*********************************************************************** @@ -612,6 +655,7 @@ /* some tests ... */ if (adfs->cbwfxSrc < sizeof(PCMWAVEFORMAT) || adfs->cbwfxDst < sizeof(PCMWAVEFORMAT) || + adfs->pwfxSrc->wFormatTag == adfs->pwfxDst->wFormatTag || ADPCM_GetFormatIndex(adfs->pwfxSrc) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE; /* FIXME: should do those tests against the real size (according to format tag */ @@ -636,26 +680,24 @@ adfs->pwfxDst->wFormatTag = WAVE_FORMAT_PCM; } - /* check if result is ok */ - if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE; - /* recompute other values */ switch (adfs->pwfxDst->wFormatTag) { case WAVE_FORMAT_PCM: adfs->pwfxDst->nBlockAlign = (adfs->pwfxDst->nChannels * adfs->pwfxDst->wBitsPerSample) / 8; adfs->pwfxDst->nAvgBytesPerSec = adfs->pwfxDst->nSamplesPerSec * adfs->pwfxDst->nBlockAlign; + /* check if result is ok */ + if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE; break; case WAVE_FORMAT_IMA_ADPCM: - adfs->pwfxDst->nBlockAlign = 1024; + init_wfx_ima_adpcm((IMAADPCMWAVEFORMAT*)adfs->pwfxDst); /* FIXME: not handling header overhead */ - adfs->pwfxDst->nAvgBytesPerSec = ((adfs->pwfxDst->nSamplesPerSec * 4) / 8) * adfs->pwfxSrc->nChannels; - ((IMAADPCMWAVEFORMAT*)adfs->pwfxDst)->wSamplesPerBlock = (1024 - 4 * adfs->pwfxSrc->nChannels) * (2 / adfs->pwfxSrc->nChannels) + 1; TRACE("setting spb=%u\n", ((IMAADPCMWAVEFORMAT*)adfs->pwfxDst)->wSamplesPerBlock); + /* check if result is ok */ + if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE; break; default: - FIXME("\n"); - break; + return ACMERR_NOTPOSSIBLE; } return MMSYSERR_NOERROR; @@ -775,6 +817,8 @@ */ static LRESULT ADPCM_StreamSize(const ACMDRVSTREAMINSTANCE *adsi, PACMDRVSTREAMSIZE adss) { + DWORD nblocks; + switch (adss->fdwSize) { case ACM_STREAMSIZEF_DESTINATION: @@ -782,14 +826,18 @@ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_IMA_ADPCM) { - /* don't take block overhead into account, doesn't matter too much */ - adss->cbSrcLength = adss->cbDstLength * 4; + nblocks = adss->cbDstLength / adsi->pwfxDst->nBlockAlign; + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + adss->cbSrcLength = nblocks * adsi->pwfxSrc->nBlockAlign * ((IMAADPCMWAVEFORMAT*)adsi->pwfxDst)->wSamplesPerBlock; } else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_IMA_ADPCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { - FIXME("misses the block header overhead\n"); - adss->cbSrcLength = 256 + adss->cbDstLength / 4; + nblocks = adss->cbDstLength / (adsi->pwfxDst->nBlockAlign * ((IMAADPCMWAVEFORMAT*)adsi->pwfxSrc)->wSamplesPerBlock); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + adss->cbSrcLength = nblocks * adsi->pwfxSrc->nBlockAlign; } else { @@ -801,14 +849,24 @@ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_IMA_ADPCM) { - FIXME("misses the block header overhead\n"); - adss->cbDstLength = 256 + adss->cbSrcLength / 4; + nblocks = adss->cbSrcLength / (adsi->pwfxSrc->nBlockAlign * ((IMAADPCMWAVEFORMAT*)adsi->pwfxDst)->wSamplesPerBlock); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + if (adss->cbSrcLength % (adsi->pwfxSrc->nBlockAlign * ((IMAADPCMWAVEFORMAT*)adsi->pwfxDst)->wSamplesPerBlock)) + /* Round block count up. */ + nblocks++; + adss->cbDstLength = nblocks * adsi->pwfxDst->nBlockAlign; } else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_IMA_ADPCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { - /* don't take block overhead into account, doesn't matter too much */ - adss->cbDstLength = adss->cbSrcLength * 4; + nblocks = adss->cbSrcLength / adsi->pwfxSrc->nBlockAlign; + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + if (adss->cbSrcLength % adsi->pwfxSrc->nBlockAlign) + /* Round block count up. */ + nblocks++; + adss->cbDstLength = nblocks * adsi->pwfxDst->nBlockAlign * ((IMAADPCMWAVEFORMAT*)adsi->pwfxSrc)->wSamplesPerBlock; } else { Modified: trunk/reactos/dll/win32/inetcomm/internettransport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/inetcomm/interne…
============================================================================== --- trunk/reactos/dll/win32/inetcomm/internettransport.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/inetcomm/internettransport.c [iso-8859-1] Sat Apr 11 12:58:56 2009 @@ -20,18 +20,14 @@ #define COBJMACROS -#include <stdarg.h> -#include <stdio.h> - +#include "ws2tcpip.h" #include "windef.h" -#include "winbase.h" #include "winnt.h" -#include "winuser.h" -#include "winsock2.h" -#include "ws2tcpip.h" #include "objbase.h" #include "ole2.h" #include "mimeole.h" + +#include <stdio.h> #include "wine/debug.h"
15 years, 9 months
1
0
0
0
[dchapyshev] 40455: - Sync qmgr, msvidc32, msvfw32, msrle32, msctf, msadp32.acm, mlang, localspl with Wine 1.1.19
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sat Apr 11 12:56:29 2009 New Revision: 40455 URL:
http://svn.reactos.org/svn/reactos?rev=40455&view=rev
Log: - Sync qmgr, msvidc32, msvfw32, msrle32, msctf, msadp32.acm, mlang, localspl with Wine 1.1.19 Added: trunk/reactos/dll/win32/msctf/version.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Pt.rc (with props) trunk/reactos/dll/win32/msvfw32/msvfw32_Zh.rc (with props) Modified: trunk/reactos/dll/win32/localspl/provider.c trunk/reactos/dll/win32/mlang/mlang.c trunk/reactos/dll/win32/msadp32.acm/msadp32.c trunk/reactos/dll/win32/msctf/msctf.rbuild trunk/reactos/dll/win32/msrle32/msrle32.c trunk/reactos/dll/win32/msvfw32/mciwnd.c trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc trunk/reactos/dll/win32/msvfw32/msvideo16.c trunk/reactos/dll/win32/msvfw32/msvideo_main.c trunk/reactos/dll/win32/msvfw32/msvideo_private.h trunk/reactos/dll/win32/msvfw32/rsrc.rc trunk/reactos/dll/win32/msvidc32/msvideo1.c trunk/reactos/dll/win32/qmgr/qmgr.c trunk/reactos/dll/win32/qmgr/service.c Modified: trunk/reactos/dll/win32/localspl/provider.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/localspl/provide…
============================================================================== --- trunk/reactos/dll/win32/localspl/provider.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/localspl/provider.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -251,25 +251,26 @@ ptr = strchrW(server, '\\'); serverlen = (ptr) ? ptr - server : lstrlenW(server); - /* servername is empty or to long */ + /* servername is empty */ if (serverlen == 0) return 0; TRACE("found %s\n", debugstr_wn(server, serverlen)); if (serverlen > MAX_COMPUTERNAME_LENGTH) return -serverlen; + + if (target) { + memcpy(target, server, serverlen * sizeof(WCHAR)); + target[serverlen] = '\0'; + } len = sizeof(buffer) / sizeof(buffer[0]); if (GetComputerNameW(buffer, &len)) { if ((serverlen == len) && (strncmpiW(server, buffer, len) == 0)) { /* The requested Servername is our computername */ - if (target) { - memcpy(target, server, serverlen * sizeof(WCHAR)); - target[serverlen] = '\0'; - } - return serverlen; - } - } - return 0; + return 0; + } + } + return serverlen; } /****************************************************************** Modified: trunk/reactos/dll/win32/mlang/mlang.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mlang/mlang.c?re…
============================================================================== --- trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mlang/mlang.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -1907,15 +1907,15 @@ static HRESULT WINAPI fnIMLangFontLink_GetStrCodePages( IMLangFontLink* iface, const WCHAR* pszSrc, - long cchSrc, + LONG cchSrc, DWORD dwPriorityCodePages, DWORD* pdwCodePages, - long* pcchCodePages) -{ - long i; + LONG* pcchCodePages) +{ + LONG i; DWORD cps = 0; - TRACE("(%p)->%s %ld %x %p %p\n", iface, debugstr_wn(pszSrc,cchSrc),cchSrc,dwPriorityCodePages,pdwCodePages,pcchCodePages); + TRACE("(%p)->%s %d %x %p %p\n", iface, debugstr_wn(pszSrc, cchSrc), cchSrc, dwPriorityCodePages, pdwCodePages, pcchCodePages); if (pdwCodePages) *pdwCodePages = 0; if (pcchCodePages) *pcchCodePages = 0; @@ -3203,8 +3203,8 @@ } static HRESULT WINAPI fnIMLangFontLink2_GetStrCodePages( IMLangFontLink2* This, - const WCHAR *pszSrc, long cchSrc, DWORD dwPriorityCodePages, - DWORD *pdwCodePages, long *pcchCodePages) + const WCHAR *pszSrc, LONG cchSrc, DWORD dwPriorityCodePages, + DWORD *pdwCodePages, LONG *pcchCodePages) { return fnIMLangFontLink_GetStrCodePages((IMLangFontLink *)This, pszSrc, cchSrc, dwPriorityCodePages, pdwCodePages, pcchCodePages); @@ -3354,14 +3354,14 @@ static HRESULT WINAPI fnIMLangLineBreakConsole_BreakLineML( IMLangLineBreakConsole* iface, IMLangString* pSrcMLStr, - long lSrcPos, - long lSrcLen, - long cMinColumns, - long cMaxColumns, - long* plLineLen, - long* plSkipLen) -{ - FIXME("(%p)->%p %li %li %li %li %p %p\n", iface, pSrcMLStr, lSrcPos, lSrcLen, cMinColumns, cMaxColumns, plLineLen, plSkipLen); + LONG lSrcPos, + LONG lSrcLen, + LONG cMinColumns, + LONG cMaxColumns, + LONG* plLineLen, + LONG* plSkipLen) +{ + FIXME("(%p)->%p %i %i %i %i %p %p\n", iface, pSrcMLStr, lSrcPos, lSrcLen, cMinColumns, cMaxColumns, plLineLen, plSkipLen); return E_NOTIMPL; } @@ -3369,12 +3369,12 @@ IMLangLineBreakConsole* iface, LCID locale, const WCHAR* pszSrc, - long cchSrc, - long cMaxColumns, - long* pcchLine, - long* pcchSkip ) -{ - FIXME("(%p)->%i %s %li %li %p %p\n", iface, locale, debugstr_wn(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip); + LONG cchSrc, + LONG cMaxColumns, + LONG* pcchLine, + LONG* pcchSkip ) +{ + FIXME("(%p)->%i %s %i %i %p %p\n", iface, locale, debugstr_wn(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip); *pcchLine = cchSrc; *pcchSkip = 0; @@ -3386,12 +3386,12 @@ LCID locale, UINT uCodePage, const CHAR* pszSrc, - long cchSrc, - long cMaxColumns, - long* pcchLine, - long* pcchSkip) -{ - FIXME("(%p)->%i %i %s %li %li %p %p\n", iface, locale, uCodePage, debugstr_an(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip); + LONG cchSrc, + LONG cMaxColumns, + LONG* pcchLine, + LONG* pcchSkip) +{ + FIXME("(%p)->%i %i %s %i %i %p %p\n", iface, locale, uCodePage, debugstr_an(pszSrc,cchSrc), cchSrc, cMaxColumns, pcchLine, pcchSkip); *pcchLine = cchSrc; *pcchSkip = 0; Modified: trunk/reactos/dll/win32/msadp32.acm/msadp32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msadp32.acm/msad…
============================================================================== --- trunk/reactos/dll/win32/msadp32.acm/msadp32.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msadp32.acm/msadp32.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -512,8 +512,7 @@ if (ADPCM_GetFormatIndex(adfs->pwfxDst) == 0xFFFFFFFF) return ACMERR_NOTPOSSIBLE; break; default: - FIXME("\n"); - break; + return ACMERR_NOTPOSSIBLE; } return MMSYSERR_NOERROR; Modified: trunk/reactos/dll/win32/msctf/msctf.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msctf/msctf.rbui…
============================================================================== --- trunk/reactos/dll/win32/msctf/msctf.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msctf/msctf.rbuild [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -12,6 +12,7 @@ <file>msctf.c</file> <file>regsvr.c</file> <file>threadmgr.c</file> + <file>version.rc</file> <library>wine</library> <library>uuid</library> <library>ole32</library> Added: trunk/reactos/dll/win32/msctf/version.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msctf/version.rc…
============================================================================== --- trunk/reactos/dll/win32/msctf/version.rc (added) +++ trunk/reactos/dll/win32/msctf/version.rc [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -1,0 +1,26 @@ +/* + * Copyright 2009 CodeWeavers, Aric Stewart + * + * 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 + */ + +#define WINE_FILEDESCRIPTION_STR "Wine Msctf" +#define WINE_FILENAME_STR "msctf.dll" +#define WINE_FILEVERSION 5,1,2600,3319 +#define WINE_FILEVERSION_STR " 5.1.2600.3319" +#define WINE_PRODUCTVERSION 5,1,2600,3319 +#define WINE_PRODUCTVERSION_STR "5.1.2600.3319" + +#include "wine/wine_common_ver.rc" Propchange: trunk/reactos/dll/win32/msctf/version.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/msrle32/msrle32.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msrle32/msrle32.…
============================================================================== --- trunk/reactos/dll/win32/msrle32/msrle32.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msrle32/msrle32.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -33,6 +33,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(msrle32); static HINSTANCE MSRLE32_hModule = 0; + +#define compare_fourcc(fcc1, fcc2) (((fcc1)^(fcc2))&~0x20202020) #define ABS(a) ((a) < 0 ? -(a) : (a)) #define SQR(a) ((a) * (a)) @@ -1114,7 +1116,7 @@ return (LPVOID)0xFFFF0000; } - if (icinfo->fccType != ICTYPE_VIDEO) return NULL; + if (compare_fourcc(icinfo->fccType, ICTYPE_VIDEO)) return NULL; TRACE("(%p = {%u,0x%08X(%4.4s),0x%08X(%4.4s),0x%X,0x%X,...})\n", icinfo, icinfo->dwSize, icinfo->fccType, (char*)&icinfo->fccType, Modified: trunk/reactos/dll/win32/msvfw32/mciwnd.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/mciwnd.c…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/mciwnd.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/mciwnd.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -309,7 +309,7 @@ /* MCI wnd class is prepared to be embedded as an MDI child window */ if (cs->dwExStyle & WS_EX_MDICHILD) { - MDICREATESTRUCTW *mdics = (MDICREATESTRUCTW *)cs->lpCreateParams; + MDICREATESTRUCTW *mdics = cs->lpCreateParams; lParam = mdics->lParam; } else @@ -449,7 +449,7 @@ TRACE("%p %04x %08lx %08lx\n", hWnd, wMsg, wParam, lParam); - mwi = (MCIWndInfo*)GetWindowLongW(hWnd, 0); + mwi = (MCIWndInfo*)GetWindowLongPtrW(hWnd, 0); if (!mwi && wMsg != WM_CREATE) return DefWindowProcW(hWnd, wMsg, wParam, lParam); @@ -568,7 +568,7 @@ hCursor = SetCursor(hCursor); mci_open.lpstrElementName = (LPWSTR)lParam; - wsprintfW(aliasW, formatW, (int)hWnd + 1); + wsprintfW(aliasW, formatW, HandleToLong(hWnd) + 1); mci_open.lpstrAlias = aliasW; mwi->lasterror = mciSendCommandW(mwi->mci, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_ALIAS | MCI_WAIT, @@ -588,7 +588,7 @@ } mwi->mci = mci_open.wDeviceID; - mwi->alias = (int)hWnd + 1; + mwi->alias = HandleToLong(hWnd) + 1; mwi->lpName = HeapAlloc(GetProcessHeap(), 0, (strlenW((LPWSTR)lParam) + 1) * sizeof(WCHAR)); strcpyW(mwi->lpName, (LPWSTR)lParam); @@ -752,7 +752,7 @@ MCIWND_notify_error(mwi); return 0; } - TRACE("MCIWNDM_GETLENGTH: %d\n", mci_status.dwReturn); + TRACE("MCIWNDM_GETLENGTH: %ld\n", mci_status.dwReturn); return mci_status.dwReturn; } @@ -769,7 +769,7 @@ MCIWND_notify_error(mwi); return 0; } - TRACE("MCIWNDM_GETSTART: %d\n", mci_status.dwReturn); + TRACE("MCIWNDM_GETSTART: %ld\n", mci_status.dwReturn); return mci_status.dwReturn; } Modified: trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Ko.rc [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -17,12 +17,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -LANGUAGE LANG_KOREAN, SUBLANG_NEUTRAL +LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "ºñµð¿À ¾ÐÃà" -FONT 8, "MS Shell Dlg" +FONT 9, "MS Shell Dlg" { DEFPUSHBUTTON "È®ÀÎ",IDOK,129,2,49,14 PUSHBUTTON "Ãë¼Ò",IDCANCEL,129,18,49,14 Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Pt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Pt.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Pt.rc [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -1,0 +1,51 @@ +/* + * Copyright 2008 Ricardo Filipe + * + * 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 + */ + +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Compressão de vídeo" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK",IDOK,129,2,49,14 + PUSHBUTTON "Cancelar",IDCANCEL,129,18,49,14 + + LTEXT "&Compressor:",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "Con&figurar...",882,129,36,49,14 + PUSHBUTTON "&Sobre...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "&Qualidade de compressão:",886,9,34,80,8 + + CONTROL "&Imagem chave todos os",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "frames",889,103,62,26,10 + + CONTROL "&Cadência de dados",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "Imagens Completas (Descomprimidas)" +} Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Pt.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/msvfw32/msvfw32_Zh.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvfw32_…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvfw32_Zh.rc (added) +++ trunk/reactos/dll/win32/msvfw32/msvfw32_Zh.rc [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -1,0 +1,92 @@ +/* + * msvfw32 (Simplified and Traditional Chinese Resources) + * + * Copyright 2008 Hongbo Ni <
hongbo.at.njstar.com
> + * + * 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 + */ + +/* Chinese text is encoded in UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "è§é¢å缩" +FONT 9, "MS Shell Dlg" +{ + DEFPUSHBUTTON "ç¡®å®",IDOK,129,2,49,14 + PUSHBUTTON "åæ¶",IDCANCEL,129,18,49,14 + + LTEXT "å缩å¨(&C):",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "é ç½®(&F)...",882,129,36,49,14 + PUSHBUTTON "å ³äº(&A)...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "å缩质é(&Q):",886,9,34,80,8 + + CONTROL "å ³é®å¸§/æ¯(&K)",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "帧",889,103,62,26,10 + + CONTROL "æ°æ®é度(&D)",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "å ¨å¸§(æªå缩)" +} + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL + +ICM_CHOOSE_COMPRESSOR DIALOG DISCARDABLE 36, 24, 187, 95 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "è¦é »å£ç¸®" +FONT 9, "MS Shell Dlg" +{ + DEFPUSHBUTTON "確å®",IDOK,129,2,49,14 + PUSHBUTTON "åæ¶",IDCANCEL,129,18,49,14 + + LTEXT "å£ç¸®å¨(&C):",-1,9,6,105,8 + COMBOBOX 880,9,16,111,67,CBS_DROPDOWNLIST|WS_VSCROLL|WS_TABSTOP + + PUSHBUTTON "é ç½®(&F)...",882,129,36,49,14 + PUSHBUTTON "éæ¼(&A)...",883,129,52,49,14 + + SCROLLBAR 884,9,44,111,9,WS_TABSTOP + + LTEXT "å£ç¸®è³ªé(&Q):",886,9,34,80,8 + + CONTROL "ééµå¹/æ¯(&K)",887,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,60,66,12 + EDITTEXT 888,78,60,22,12 + LTEXT "å¹",889,103,62,26,10 + + CONTROL "æ¸æé度(&D)",894,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,9,76,66,12 + EDITTEXT 895,78,76,22,12 + LTEXT "KB/sec",896,102,78,26,10 +} + +STRINGTABLE DISCARDABLE +{ + IDS_FULLFRAMES "å ¨å¹(æªå£ç¸®)" +} + +#pragma code_page(default) Propchange: trunk/reactos/dll/win32/msvfw32/msvfw32_Zh.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/msvfw32/msvideo16.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo1…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo16.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo16.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -602,7 +602,7 @@ case ICM_GETINFO: { ICINFO *ici = (ICINFO*)(*lParam1); - ICINFO16 *ici16 = (ICINFO16*)data16; + ICINFO16 *ici16 = data16; UNCOPY(ici, fccType); UNCOPY(ici, fccHandler); Modified: trunk/reactos/dll/win32/msvfw32/msvideo_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo_…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo_main.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -1,7 +1,7 @@ /* * Copyright 1998 Marcus Meissner * Copyright 2000 Bradley Baetz - * Copyright 2003 Michael Günnewig + * Copyright 2003 Michael Günnewig * Copyright 2005 Dmitry Timoshkov * * This library is free software; you can redistribute it and/or @@ -102,7 +102,7 @@ return strncasecmp(fcc_str1, fcc_str2, 4); } -typedef BOOL (*enum_handler_t)(const char*, int, void*); +typedef BOOL (*enum_handler_t)(const char*, unsigned int, void*); static BOOL enum_drivers(DWORD fccType, enum_handler_t handler, void* param) { @@ -173,9 +173,9 @@ return 0x040003B6; /* 4.950 */ } -static BOOL ICInfo_enum_handler(const char *drv, int nr, void *param) -{ - ICINFO *lpicinfo = (ICINFO *)param; +static BOOL ICInfo_enum_handler(const char *drv, unsigned int nr, void *param) +{ + ICINFO *lpicinfo = param; DWORD fccHandler = mmioStringToFOURCCA(drv + 5, 0); /* exact match of fccHandler or nth driver found */ @@ -519,9 +519,9 @@ return 0; } -static BOOL ICLocate_enum_handler(const char *drv, int nr, void *param) -{ - driver_info_t *info = (driver_info_t *)param; +static BOOL ICLocate_enum_handler(const char *drv, unsigned int nr, void *param) +{ + driver_info_t *info = param; info->fccHandler = mmioStringToFOURCCA(drv + 5, 0); info->hic = try_driver(info); return info->hic != 0; @@ -1026,9 +1026,9 @@ LRESULT MSVIDEO_SendMessage(WINE_HIC* whic, UINT msg, DWORD_PTR lParam1, DWORD_PTR lParam2) { LRESULT ret; - -#define XX(x) case x: TRACE("(%p,"#x",0x%08lx,0x%08lx)\n",whic,lParam1,lParam2); break; - + +#define XX(x) case x: TRACE("(%p,"#x",0x%08lx,0x%08lx)\n",whic,lParam1,lParam2); break + switch (msg) { /* DRV_* */ XX(DRV_LOAD); @@ -1299,7 +1299,7 @@ pHdr = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,cbHdr+sizeof(RGBQUAD)*256); if ( pHdr == NULL ) goto err; - if ( ICDecompressGetFormat( hic, lpbiIn, (BITMAPINFO*)pHdr ) != ICERR_OK ) + if ( ICDecompressGetFormat( hic, lpbiIn, pHdr ) != ICERR_OK ) goto err; lpbiOut = (BITMAPINFO*)pHdr; if ( lpbiOut->bmiHeader.biBitCount <= 8 && @@ -1337,7 +1337,7 @@ WARN( "out of memory\n" ); goto err; } - pMem = (BYTE*)GlobalLock( hMem ); + pMem = GlobalLock( hMem ); if ( pMem == NULL ) goto err; memcpy( pMem, lpbiOut, cbHdr ); @@ -1368,7 +1368,7 @@ */ LPVOID VFWAPI ICSeqCompressFrame(PCOMPVARS pc, UINT uiFlags, LPVOID lpBits, BOOL *pfKey, LONG *plSize) { - ICCOMPRESS* icComp = (ICCOMPRESS *)pc->lpState; + ICCOMPRESS* icComp = pc->lpState; DWORD ret; TRACE("(%p, 0x%08x, %p, %p, %p)\n", pc, uiFlags, lpBits, pfKey, plSize); @@ -1490,7 +1490,7 @@ TRACE(" -- %x\n", ret); if (ret == ICERR_OK) { - ICCOMPRESS* icComp = (ICCOMPRESS *)pc->lpState; + ICCOMPRESS* icComp = pc->lpState; /* Initialise some variables */ pc->lFrame = 0; pc->lKeyCount = 0; Modified: trunk/reactos/dll/win32/msvfw32/msvideo_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/msvideo_…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/msvideo_private.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/msvideo_private.h [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -18,9 +18,6 @@ #ifndef __WINE_MSVIDEO_PRIVATE_H #define __WINE_MSVIDEO_PRIVATE_H - -/* Installable Compressor Manager */ -#define ICVERSION 0x0104 #define ICM_CHOOSE_COMPRESSOR 1 #define IDC_COMP_LIST 880 Modified: trunk/reactos/dll/win32/msvfw32/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvfw32/rsrc.rc?…
============================================================================== --- trunk/reactos/dll/win32/msvfw32/rsrc.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvfw32/rsrc.rc [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -30,7 +30,9 @@ #include "msvfw32_Nl.rc" #include "msvfw32_No.rc" #include "msvfw32_Pl.rc" +#include "msvfw32_Pt.rc" #include "msvfw32_Ru.rc" #include "msvfw32_Si.rc" #include "msvfw32_Sv.rc" #include "msvfw32_Tr.rc" +#include "msvfw32_Zh.rc" Modified: trunk/reactos/dll/win32/msvidc32/msvideo1.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msvidc32/msvideo…
============================================================================== --- trunk/reactos/dll/win32/msvidc32/msvideo1.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msvidc32/msvideo1.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -7,7 +7,7 @@ * 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 of the License, or (at your option) any later version. + * 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 @@ -50,6 +50,7 @@ #define CRAM_MAGIC mmioFOURCC('C', 'R', 'A', 'M') #define MSVC_MAGIC mmioFOURCC('M', 'S', 'V', 'C') #define WHAM_MAGIC mmioFOURCC('W', 'H', 'A', 'M') +#define compare_fourcc(fcc1, fcc2) (((fcc1)^(fcc2))&~0x20202020) #define PALETTE_COUNT 256 #define LE_16(x) ((((const uint8_t *)(x))[1] << 8) | ((const uint8_t *)(x))[0]) @@ -502,7 +503,7 @@ TRACE("Opened\n"); - if (icinfo && icinfo->fccType != ICTYPE_VIDEO) return 0; + if (icinfo && compare_fourcc(icinfo->fccType, ICTYPE_VIDEO)) return 0; info = HeapAlloc( GetProcessHeap(), 0, sizeof (Msvideo1Context) ); if( info ) Modified: trunk/reactos/dll/win32/qmgr/qmgr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgr/qmgr.c?rev=…
============================================================================== --- trunk/reactos/dll/win32/qmgr/qmgr.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/qmgr/qmgr.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -157,7 +157,14 @@ /* Check if it's the stop_event */ if (WaitForMultipleObjects(2, events, FALSE, INFINITE) == WAIT_OBJECT_0) + { + LIST_FOR_EACH_ENTRY_SAFE(job, jobCur, &qmgr->jobs, BackgroundCopyJobImpl, entryFromQmgr) + { + list_remove(&job->entryFromQmgr); + IBackgroundCopyJob_Release((IBackgroundCopyJob *) job); + } return 0; + } /* Note that other threads may add files to the job list, but only this thread ever deletes them so we don't need to worry about jobs Modified: trunk/reactos/dll/win32/qmgr/service.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgr/service.c?r…
============================================================================== --- trunk/reactos/dll/win32/qmgr/service.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/qmgr/service.c [iso-8859-1] Sat Apr 11 12:56:29 2009 @@ -153,4 +153,6 @@ UpdateStatus(SERVICE_STOPPED, NO_ERROR, 0); CloseHandle(stop_event); TRACE("service stoped\n"); + + CoUninitialize(); }
15 years, 9 months
1
0
0
0
[dchapyshev] 40454: - Sync mciqtz32 and winemp3 with Wine 1.1.19
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sat Apr 11 12:16:16 2009 New Revision: 40454 URL:
http://svn.reactos.org/svn/reactos?rev=40454&view=rev
Log: - Sync mciqtz32 and winemp3 with Wine 1.1.19 Added: trunk/reactos/dll/win32/mciqtz32/mciqtz_private.h (with props) Modified: trunk/reactos/dll/win32/mciqtz32/mciqtz.c trunk/reactos/dll/win32/mciqtz32/mciqtz32.rbuild trunk/reactos/dll/win32/winemp3.acm/mpegl3.c Modified: trunk/reactos/dll/win32/mciqtz32/mciqtz.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mciqtz32/mciqtz.…
============================================================================== --- trunk/reactos/dll/win32/mciqtz32/mciqtz.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mciqtz32/mciqtz.c [iso-8859-1] Sat Apr 11 12:16:16 2009 @@ -21,10 +21,17 @@ #include <stdarg.h> #include "windef.h" #include "winbase.h" +#include "winuser.h" #include "mmddk.h" #include "wine/debug.h" +#include "mciqtz_private.h" +#include "digitalv.h" +#include "wownt32.h" WINE_DEFAULT_DEBUG_CHANNEL(mciqtz); + +static DWORD MCIQTZ_mciClose(UINT, DWORD, LPMCI_GENERIC_PARMS); +static DWORD MCIQTZ_mciStop(UINT, DWORD, LPMCI_GENERIC_PARMS); /*======================================================================* * MCI QTZ implementation * @@ -46,6 +53,367 @@ return TRUE; } +/************************************************************************** + * MCIQTZ_drvOpen [internal] + */ +static DWORD MCIQTZ_drvOpen(LPCWSTR str, LPMCI_OPEN_DRIVER_PARMSW modp) +{ + WINE_MCIQTZ* wma; + + TRACE("%s, %p\n", debugstr_w(str), modp); + + /* session instance */ + if (!modp) + return 0xFFFFFFFF; + + wma = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MCIQTZ)); + if (!wma) + return 0; + + wma->wDevID = modp->wDeviceID; + mciSetDriverData(wma->wDevID, (DWORD_PTR)wma); + + return modp->wDeviceID; +} + +/************************************************************************** + * MCIQTZ_drvClose [internal] + */ +static DWORD MCIQTZ_drvClose(DWORD dwDevID) +{ + WINE_MCIQTZ* wma; + + TRACE("%04x\n", dwDevID); + + /* finish all outstanding things */ + MCIQTZ_mciClose(dwDevID, MCI_WAIT, NULL); + + wma = (WINE_MCIQTZ*)mciGetDriverData(dwDevID); + + if (wma) { + HeapFree(GetProcessHeap(), 0, wma); + return 1; + } + + return (dwDevID == 0xFFFFFFFF) ? 1 : 0; +} + +/************************************************************************** + * MCIQTZ_drvConfigure [internal] + */ +static DWORD MCIQTZ_drvConfigure(DWORD dwDevID) +{ + WINE_MCIQTZ* wma; + + TRACE("%04x\n", dwDevID); + + MCIQTZ_mciStop(dwDevID, MCI_WAIT, NULL); + + wma = (WINE_MCIQTZ*)mciGetDriverData(dwDevID); + + if (wma) { + MessageBoxA(0, "Sample QTZ Wine Driver !", "MM-Wine Driver", MB_OK); + return 1; + } + + return 0; +} + +/************************************************************************** + * MCIQTZ_mciGetOpenDev [internal] + */ +static WINE_MCIQTZ* MCIQTZ_mciGetOpenDev(UINT wDevID) +{ + WINE_MCIQTZ* wma = (WINE_MCIQTZ*)mciGetDriverData(wDevID); + + if (!wma) { + WARN("Invalid wDevID=%u\n", wDevID); + return 0; + } + return wma; +} + +/*************************************************************************** + * MCIQTZ_mciOpen [internal] + */ +static DWORD MCIQTZ_mciOpen(UINT wDevID, DWORD dwFlags, + LPMCI_DGV_OPEN_PARMSW lpOpenParms) +{ + WINE_MCIQTZ* wma; + HRESULT hr; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpOpenParms); + + MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL); + + if (!lpOpenParms) + return MCIERR_NULL_PARAMETER_BLOCK; + + wma = (WINE_MCIQTZ*)mciGetDriverData(wDevID); + if (!wma) + return MCIERR_INVALID_DEVICE_ID; + + CoInitializeEx(NULL, COINIT_MULTITHREADED); + + hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, &IID_IGraphBuilder, (LPVOID*)&wma->pgraph); + if (FAILED(hr)) { + TRACE("Cannot create filtergraph (hr = %x)\n", hr); + goto err; + } + + hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaControl, (LPVOID*)&wma->pmctrl); + if (FAILED(hr)) { + TRACE("Cannot get IMediaControl interface (hr = %x)\n", hr); + goto err; + } + + if (!((dwFlags & MCI_OPEN_ELEMENT) && (dwFlags & MCI_OPEN_ELEMENT))) { + TRACE("Wrong dwFlags %x\n", dwFlags); + goto err; + } + + if (!lpOpenParms->lpstrElementName || !lpOpenParms->lpstrElementName[0]) { + TRACE("Invalid filename specified\n"); + goto err; + } + + TRACE("Open file %s\n", debugstr_w(lpOpenParms->lpstrElementName)); + + hr = IGraphBuilder_RenderFile(wma->pgraph, lpOpenParms->lpstrElementName, NULL); + if (FAILED(hr)) { + TRACE("Cannot render file (hr = %x)\n", hr); + goto err; + } + + return 0; + +err: + if (wma->pgraph) + IGraphBuilder_Release(wma->pgraph); + wma->pgraph = NULL; + if (wma->pmctrl) + IMediaControl_Release(wma->pmctrl); + wma->pmctrl = NULL; + + CoUninitialize(); + + return MCIERR_INTERNAL; +} + +/*************************************************************************** + * MCIQTZ_mciClose [internal] + */ +static DWORD MCIQTZ_mciClose(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms) +{ + WINE_MCIQTZ* wma; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); + + MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL); + + wma = MCIQTZ_mciGetOpenDev(wDevID); + if (!wma) + return MCIERR_INVALID_DEVICE_ID; + + if (wma->pgraph) + IGraphBuilder_Release(wma->pgraph); + wma->pgraph = NULL; + if (wma->pmctrl) + IMediaControl_Release(wma->pmctrl); + wma->pmctrl = NULL; + + CoUninitialize(); + + return 0; +} + +/*************************************************************************** + * MCIQTZ_mciPlay [internal] + */ +static DWORD MCIQTZ_mciPlay(UINT wDevID, DWORD dwFlags, LPMCI_PLAY_PARMS lpParms) +{ + WINE_MCIQTZ* wma; + HRESULT hr; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); + + if (!lpParms) + return MCIERR_NULL_PARAMETER_BLOCK; + + wma = MCIQTZ_mciGetOpenDev(wDevID); + + hr = IMediaControl_Run(wma->pmctrl); + if (FAILED(hr)) { + TRACE("Cannot run filtergraph (hr = %x)\n", hr); + return MCIERR_INTERNAL; + } + + wma->started = TRUE; + + return 0; +} + +/*************************************************************************** + * MCIQTZ_mciSeek [internal] + */ +static DWORD MCIQTZ_mciSeek(UINT wDevID, DWORD dwFlags, LPMCI_SEEK_PARMS lpParms) +{ + WINE_MCIQTZ* wma; + HRESULT hr; + IMediaPosition* pmpos; + LONGLONG newpos; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); + + MCIQTZ_mciStop(wDevID, MCI_WAIT, NULL); + + if (!lpParms) + return MCIERR_NULL_PARAMETER_BLOCK; + + wma = MCIQTZ_mciGetOpenDev(wDevID); + if (!wma) + return MCIERR_INVALID_DEVICE_ID; + + if (dwFlags & MCI_SEEK_TO_START) { + newpos = 0; + } else if (dwFlags & MCI_SEEK_TO_END) { + FIXME("MCI_SEEK_TO_END not implemented yet\n"); + return MCIERR_INTERNAL; + } else if (dwFlags & MCI_TO) { + FIXME("MCI_TO not implemented yet\n"); + return MCIERR_INTERNAL; + } else { + WARN("dwFlag doesn't tell where to seek to...\n"); + return MCIERR_MISSING_PARAMETER; + } + + hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaPosition, (LPVOID*)&pmpos); + if (FAILED(hr)) { + FIXME("Cannot get IMediaPostion interface (hr = %x)\n", hr); + return MCIERR_INTERNAL; + } + + hr = IMediaPosition_put_CurrentPosition(pmpos, newpos); + if (FAILED(hr)) { + FIXME("Cannot set position (hr = %x)\n", hr); + IMediaPosition_Release(pmpos); + return MCIERR_INTERNAL; + } + + IMediaPosition_Release(pmpos); + + if (dwFlags & MCI_NOTIFY) + mciDriverNotify(HWND_32(LOWORD(lpParms->dwCallback)), wDevID, MCI_NOTIFY_SUCCESSFUL); + + return 0; +} + +/*************************************************************************** + * MCIQTZ_mciStop [internal] + */ +static DWORD MCIQTZ_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms) +{ + WINE_MCIQTZ* wma; + HRESULT hr; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); + + wma = MCIQTZ_mciGetOpenDev(wDevID); + if (!wma) + return MCIERR_INVALID_DEVICE_ID; + + if (!wma->started) + return 0; + + hr = IMediaControl_Stop(wma->pmctrl); + if (FAILED(hr)) { + TRACE("Cannot stop filtergraph (hr = %x)\n", hr); + return MCIERR_INTERNAL; + } + + wma->started = FALSE; + + return 0; +} + +/*************************************************************************** + * MCIQTZ_mciStatus [internal] + */ +static DWORD MCIQTZ_mciStatus(UINT wDevID, DWORD dwFlags, LPMCI_DGV_STATUS_PARMSW lpParms) +{ + WINE_MCIQTZ* wma; + + TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms); + + if (!lpParms) + return MCIERR_NULL_PARAMETER_BLOCK; + + wma = MCIQTZ_mciGetOpenDev(wDevID); + if (!wma) + return MCIERR_INVALID_DEVICE_ID; + + if (!(dwFlags & MCI_STATUS_ITEM)) { + WARN("No status item specified\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + } + + switch (lpParms->dwItem) { + case MCI_STATUS_LENGTH: + FIXME("MCI_STATUS_LENGTH not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_POSITION: + { + HRESULT hr; + REFTIME curpos; + IMediaPosition* pmpos; + + hr = IGraphBuilder_QueryInterface(wma->pgraph, &IID_IMediaPosition, (LPVOID*)&pmpos); + if (FAILED(hr)) { + FIXME("Cannot get IMediaPostion interface (hr = %x)\n", hr); + return MCIERR_INTERNAL; + } + + hr = IMediaPosition_get_CurrentPosition(pmpos, &curpos); + if (FAILED(hr)) { + FIXME("Cannot get position (hr = %x)\n", hr); + IMediaPosition_Release(pmpos); + return MCIERR_INTERNAL; + } + + IMediaPosition_Release(pmpos); + lpParms->dwReturn = curpos / 10000; + + break; + } + case MCI_STATUS_NUMBER_OF_TRACKS: + FIXME("MCI_STATUS_NUMBER_OF_TRACKS not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_MODE: + FIXME("MCI_STATUS_MODE not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_MEDIA_PRESENT: + FIXME("MCI_STATUS_MEDIA_PRESENT not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_TIME_FORMAT: + FIXME("MCI_STATUS_TIME_FORMAT not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_READY: + FIXME("MCI_STATUS_READY not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + case MCI_STATUS_CURRENT_TRACK: + FIXME("MCI_STATUS_CURRENT_TRACK not implemented yet\n"); + return MCIERR_UNRECOGNIZED_COMMAND; + default: + FIXME("Unknown command %08X\n", lpParms->dwItem); + return MCIERR_UNRECOGNIZED_COMMAND; + } + + if (dwFlags & MCI_NOTIFY) + mciDriverNotify(HWND_32(LOWORD(lpParms->dwCallback)), wDevID, MCI_NOTIFY_SUCCESSFUL); + + return 0; +} + /*======================================================================* * MCI QTZ entry points * *======================================================================*/ @@ -56,8 +424,80 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg, LPARAM dwParam1, LPARAM dwParam2) { - FIXME("(%08lX, %p, %08X, %08lX, %08lX): Stub!\n", - dwDevID, hDriv, wMsg, dwParam1, dwParam2); + TRACE("(%08lX, %p, %08X, %08lX, %08lX)\n", + dwDevID, hDriv, wMsg, dwParam1, dwParam2); + + switch (wMsg) { + case DRV_LOAD: return 1; + case DRV_FREE: return 1; + case DRV_OPEN: return MCIQTZ_drvOpen((LPCWSTR)dwParam1, (LPMCI_OPEN_DRIVER_PARMSW)dwParam2); + case DRV_CLOSE: return MCIQTZ_drvClose(dwDevID); + case DRV_ENABLE: return 1; + case DRV_DISABLE: return 1; + case DRV_QUERYCONFIGURE: return 1; + case DRV_CONFIGURE: return MCIQTZ_drvConfigure(dwDevID); + case DRV_INSTALL: return DRVCNF_RESTART; + case DRV_REMOVE: return DRVCNF_RESTART; + } + + /* session instance */ + if (dwDevID == 0xFFFFFFFF) + return 1; + + switch (wMsg) { + case MCI_OPEN_DRIVER: return MCIQTZ_mciOpen (dwDevID, dwParam1, (LPMCI_DGV_OPEN_PARMSW) dwParam2); + case MCI_CLOSE_DRIVER: return MCIQTZ_mciClose (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2); + case MCI_PLAY: return MCIQTZ_mciPlay (dwDevID, dwParam1, (LPMCI_PLAY_PARMS) dwParam2); + case MCI_SEEK: return MCIQTZ_mciSeek (dwDevID, dwParam1, (LPMCI_SEEK_PARMS) dwParam2); + case MCI_STATUS: return MCIQTZ_mciStatus (dwDevID, dwParam1, (LPMCI_DGV_STATUS_PARMSW) dwParam2); + case MCI_RECORD: + case MCI_STOP: + case MCI_SET: + case MCI_PAUSE: + case MCI_RESUME: + case MCI_GETDEVCAPS: + case MCI_INFO: + case MCI_PUT: + case MCI_WINDOW: + case MCI_LOAD: + case MCI_SAVE: + case MCI_FREEZE: + case MCI_REALIZE: + case MCI_UNFREEZE: + case MCI_UPDATE: + case MCI_WHERE: + case MCI_STEP: + case MCI_COPY: + case MCI_CUT: + case MCI_DELETE: + case MCI_PASTE: + case MCI_CUE: + /* Digital Video specific */ + case MCI_CAPTURE: + case MCI_MONITOR: + case MCI_RESERVE: + case MCI_SETAUDIO: + case MCI_SIGNAL: + case MCI_SETVIDEO: + case MCI_QUALITY: + case MCI_LIST: + case MCI_UNDO: + case MCI_CONFIGURE: + case MCI_RESTORE: + FIXME("Unimplemented command [%u]\n", wMsg); + break; + case MCI_SPIN: + case MCI_ESCAPE: + WARN("Unsupported command [%u]\n", wMsg); + break; + case MCI_OPEN: + case MCI_CLOSE: + FIXME("Shouldn't receive a MCI_OPEN or CLOSE message\n"); + break; + default: + TRACE("Sending msg [%u] to default driver proc\n", wMsg); + return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); + } return MCIERR_UNRECOGNIZED_COMMAND; } Modified: trunk/reactos/dll/win32/mciqtz32/mciqtz32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mciqtz32/mciqtz3…
============================================================================== --- trunk/reactos/dll/win32/mciqtz32/mciqtz32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mciqtz32/mciqtz32.rbuild [iso-8859-1] Sat Apr 11 12:16:16 2009 @@ -7,5 +7,10 @@ <file>version.rc</file> <library>wine</library> <library>kernel32</library> + <library>oleaut32</library> + <library>ole32</library> + <library>winmm</library> + <library>user32</library> <library>ntdll</library> + <library>strmiids</library> </module> Added: trunk/reactos/dll/win32/mciqtz32/mciqtz_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mciqtz32/mciqtz_…
============================================================================== --- trunk/reactos/dll/win32/mciqtz32/mciqtz_private.h (added) +++ trunk/reactos/dll/win32/mciqtz32/mciqtz_private.h [iso-8859-1] Sat Apr 11 12:16:16 2009 @@ -1,0 +1,35 @@ +/* + * DirectShow MCI Driver + * + * Copyright 2009 Christian Costa + * + * 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 + */ + +#ifndef __WINE_PRIVATE_MCIQTZ_H +#define __WINE_PRIVATE_MCIQTZ_H + +#define COBJMACROS + +#include "dshow.h" + +typedef struct { + MCIDEVICEID wDevID; + IGraphBuilder* pgraph; + IMediaControl* pmctrl; + BOOL started; +} WINE_MCIQTZ; + +#endif /* __WINE_PRIVATE_MCIQTZ_H */ Propchange: trunk/reactos/dll/win32/mciqtz32/mciqtz_private.h ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/winemp3.acm/mpegl3.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winemp3.acm/mpeg…
============================================================================== --- trunk/reactos/dll/win32/winemp3.acm/mpegl3.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/winemp3.acm/mpegl3.c [iso-8859-1] Sat Apr 11 12:16:16 2009 @@ -75,16 +75,26 @@ { {1, 8, 8000}, {2, 8, 8000}, {1, 16, 8000}, {2, 16, 8000}, {1, 8, 11025}, {2, 8, 11025}, {1, 16, 11025}, {2, 16, 11025}, + {1, 8, 12000}, {2, 8, 12000}, {1, 16, 12000}, {2, 16, 12000}, + {1, 8, 16000}, {2, 8, 16000}, {1, 16, 16000}, {2, 16, 16000}, {1, 8, 22050}, {2, 8, 22050}, {1, 16, 22050}, {2, 16, 22050}, + {1, 8, 24000}, {2, 8, 24000}, {1, 16, 24000}, {2, 16, 24000}, + {1, 8, 32000}, {2, 8, 32000}, {1, 16, 32000}, {2, 16, 32000}, {1, 8, 44100}, {2, 8, 44100}, {1, 16, 44100}, {2, 16, 44100}, - {1, 8, 48000}, {2, 8, 48000}, {1, 16, 48000}, {2, 16, 48000}, + {1, 8, 48000}, {2, 8, 48000}, {1, 16, 48000}, {2, 16, 48000} }; static const Format MPEG3_Formats[] = { - {1, 0, 8000}, {2, 0, 8000}, {1, 0, 11025}, {2, 0, 11025}, - {1, 0, 22050}, {2, 0, 22050}, {1, 0, 44100}, {2, 0, 44100}, - {1, 0, 48000}, {2, 0, 48000}, + {1, 0, 8000}, {2, 0, 8000}, + {1, 0, 11025}, {2, 0, 11025}, + {1, 0, 12000}, {2, 0, 12000}, + {1, 0, 16000}, {2, 0, 16000}, + {1, 0, 22050}, {2, 0, 22050}, + {1, 0, 24000}, {2, 0, 24000}, + {1, 0, 32000}, {2, 0, 32000}, + {1, 0, 44100}, {2, 0, 44100}, + {1, 0, 48000}, {2, 0, 48000} }; #define NUM_PCM_FORMATS (sizeof(PCM_Formats) / sizeof(PCM_Formats[0])) @@ -471,6 +481,8 @@ */ static LRESULT MPEG3_StreamSize(PACMDRVSTREAMINSTANCE adsi, PACMDRVSTREAMSIZE adss) { + DWORD nblocks; + switch (adss->fdwSize) { case ACM_STREAMSIZEF_DESTINATION: @@ -478,14 +490,18 @@ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) { - /* don't take block overhead into account, doesn't matter too much */ - adss->cbSrcLength = adss->cbDstLength * 12; + nblocks = (adss->cbDstLength - 3000) / (DWORD)(adsi->pwfxDst->nAvgBytesPerSec * 1152 / adsi->pwfxDst->nSamplesPerSec + 0.5); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + adss->cbSrcLength = nblocks * 1152 * adsi->pwfxSrc->nBlockAlign; } else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { - FIXME("misses the block header overhead\n"); - adss->cbSrcLength = 256 + adss->cbDstLength / 12; + nblocks = adss->cbDstLength / (adsi->pwfxDst->nBlockAlign * 1152); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + adss->cbSrcLength = nblocks * (DWORD)(adsi->pwfxSrc->nAvgBytesPerSec * 1152 / adsi->pwfxSrc->nSamplesPerSec); } else { @@ -497,14 +513,24 @@ if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_PCM && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_MPEGLAYER3) { - FIXME("misses the block header overhead\n"); - adss->cbDstLength = 256 + adss->cbSrcLength / 12; + nblocks = adss->cbSrcLength / (adsi->pwfxSrc->nBlockAlign * 1152); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + if (adss->cbSrcLength % (DWORD)(adsi->pwfxSrc->nBlockAlign * 1152)) + /* Round block count up. */ + nblocks++; + adss->cbDstLength = 3000 + nblocks * (DWORD)(adsi->pwfxDst->nAvgBytesPerSec * 1152 / adsi->pwfxDst->nSamplesPerSec + 0.5); } else if (adsi->pwfxSrc->wFormatTag == WAVE_FORMAT_MPEGLAYER3 && adsi->pwfxDst->wFormatTag == WAVE_FORMAT_PCM) { - /* don't take block overhead into account, doesn't matter too much */ - adss->cbDstLength = adss->cbSrcLength * 12; + nblocks = adss->cbSrcLength / (DWORD)(adsi->pwfxSrc->nAvgBytesPerSec * 1152 / adsi->pwfxSrc->nSamplesPerSec); + if (nblocks == 0) + return ACMERR_NOTPOSSIBLE; + if (adss->cbSrcLength % (DWORD)(adsi->pwfxSrc->nAvgBytesPerSec * 1152 / adsi->pwfxSrc->nSamplesPerSec)) + /* Round block count up. */ + nblocks++; + adss->cbDstLength = nblocks * 1152 * adsi->pwfxDst->nBlockAlign; } else {
15 years, 9 months
1
0
0
0
[dchapyshev] 40453: - Remove unneeded files
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sat Apr 11 11:25:22 2009 New Revision: 40453 URL:
http://svn.reactos.org/svn/reactos?rev=40453&view=rev
Log: - Remove unneeded files Removed: trunk/reactos/dll/win32/icmp/Makefile.in trunk/reactos/dll/win32/icmp/icmp.dsp Removed: trunk/reactos/dll/win32/icmp/Makefile.in URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/Makefile.in…
============================================================================== --- trunk/reactos/dll/win32/icmp/Makefile.in [iso-8859-1] (original) +++ trunk/reactos/dll/win32/icmp/Makefile.in (removed) @@ -1,14 +1,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = icmp.dll -IMPORTLIB = libicmp.$(IMPLIBEXT) -IMPORTS = kernel32 -EXTRALIBS = @SOCKETLIBS@ - -C_SRCS = icmp_main.c - -@MAKE_DLL_RULES@ - -### Dependencies: Removed: trunk/reactos/dll/win32/icmp/icmp.dsp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/icmp/icmp.dsp?re…
============================================================================== --- trunk/reactos/dll/win32/icmp/icmp.dsp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/icmp/icmp.dsp (removed) @@ -1,96 +1,0 @@ -# Microsoft Developer Studio Project File - Name="icmp" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=icmp - Win32 -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "icmp.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "icmp.mak" CFG="icmp - Win32" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "icmp - Win32" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Output\Win32" -# PROP BASE Intermediate_Dir "Output\Win32" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Output\Win32" -# PROP Intermediate_Dir "Output\Win32" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "ICMP_EXPORTS" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I ..\..\include /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "_ICMP_" /D "__WINESRC__" /D __WINETEST_OUTPUT_DIR=\"Output\\Win32\" /D "__i386__" /D "_X86_" /D inline=__inline /FR /FD /GZ /c -# SUBTRACT CPP /X /YX -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x41d /d "_DEBUG" -# ADD RSC /l 0x41d /i "..\..\include" /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 /nologo /dll /debug /machine:I386 /def:"icmp.def" /pdbtype:sept -# Begin Target - -# Name "icmp - Win32" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\icmp.dll.dbg.c -# End Source File -# Begin Source File - -SOURCE=.\icmp.spec -# Begin Custom Build -InputPath=.\icmp.spec - -BuildCmds= \ - ..\..\tools\winebuild\Output\\Win32\winebuild.exe --def .\icmp.spec > .\icmp.def \ - ..\..\tools\winebuild\Output\\Win32\winebuild.exe -o .\icmp.dll.dbg.c --debug -C. icmp_main.c \ - - -".\icmp.def" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) - -".\icmp.dll.dbg.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - $(BuildCmds) -# End Custom Build -# End Source File -# Begin Source File - -SOURCE=.\icmp_main.c -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project
15 years, 9 months
1
0
0
0
[dchapyshev] 40452: - Add amstream from Wine
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sat Apr 11 11:24:37 2009 New Revision: 40452 URL:
http://svn.reactos.org/svn/reactos?rev=40452&view=rev
Log: - Add amstream from Wine Added: trunk/reactos/dll/directx/amstream/ (with props) trunk/reactos/dll/directx/amstream/amstream.c (with props) trunk/reactos/dll/directx/amstream/amstream.rbuild (with props) trunk/reactos/dll/directx/amstream/amstream.spec (with props) trunk/reactos/dll/directx/amstream/amstream_i.c (with props) trunk/reactos/dll/directx/amstream/amstream_private.h (with props) trunk/reactos/dll/directx/amstream/main.c (with props) trunk/reactos/dll/directx/amstream/mediastream.c (with props) trunk/reactos/dll/directx/amstream/mediastreamfilter.c (with props) trunk/reactos/dll/directx/amstream/regsvr.c (with props) trunk/reactos/dll/directx/amstream/version.rc (with props) Modified: trunk/reactos/baseaddress.rbuild trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/dll/directx/directx.rbuild trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=404…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -111,6 +111,7 @@ <property name="BASEADDRESS_CARDS" value="0x701a0000" /> <property name="BASEADDRESS_WININET" value="0x70200000" /> <property name="BASEADDRESS_WINHTTP" value="0x70c60000" /> + <property name="BASEADDRESS_AMSTREAM" value="0x71030000" /> <property name="BASEADDRESS_ACLUI" value="0x71550000" /> <property name="BASEADDRESS_DHCPCSVC" value="0x71650000" /> <property name="BASEADDRESS_SHDOCVW" value="0x71700000" /> Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -140,6 +140,7 @@ dll\cpl\timedate\timedate.cpl 1 ;dll\cpl\usrmgr\usrmgr.cpl 1 +dll\directx\amstream\amstream.dll 1 dll\directx\dinput\dinput.dll 1 dll\directx\dinput8\dinput8.dll 1 dll\directx\dplay\dplay.dll 1 Propchange: trunk/reactos/dll/directx/amstream/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Apr 11 11:24:37 2009 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/dll/directx/amstream/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/dll/directx/amstream/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/directx/amstream/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/dll/directx/amstream/amstream.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
============================================================================== --- trunk/reactos/dll/directx/amstream/amstream.c (added) +++ trunk/reactos/dll/directx/amstream/amstream.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,400 @@ +/* + * Implementation of IAMMultiMediaStream Interface + * + * Copyright 2004 Christian Costa + * Copyright 2006 Ivan Leo Puoti + * + * This file contains the (internal) driver registration functions, + * driver enumeration APIs and DirectDraw creation functions. + * + * 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 "wine/debug.h" + +#define COBJMACROS + +#include "winbase.h" +#include "wingdi.h" + +#include "amstream_private.h" +#include "amstream.h" + +WINE_DEFAULT_DEBUG_CHANNEL(amstream); + +typedef struct { + IAMMultiMediaStream lpVtbl; + LONG ref; + IGraphBuilder* pFilterGraph; + IPin* ipin; + IGraphBuilder* GraphBuilder; + ULONG nbStreams; + IMediaStream** pStreams; + STREAM_TYPE StreamType; +} IAMMultiMediaStreamImpl; + +static const struct IAMMultiMediaStreamVtbl AM_Vtbl; + +HRESULT AM_create(IUnknown *pUnkOuter, LPVOID *ppObj) +{ + IAMMultiMediaStreamImpl* object; + + TRACE("(%p,%p)\n", pUnkOuter, ppObj); + + if( pUnkOuter ) + return CLASS_E_NOAGGREGATION; + + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IAMMultiMediaStreamImpl)); + if (!object) + { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + } + + object->lpVtbl.lpVtbl = &AM_Vtbl; + object->ref = 1; + + *ppObj = object; + + return S_OK; +} + +/*** IUnknown methods ***/ +static HRESULT WINAPI IAMMultiMediaStreamImpl_QueryInterface(IAMMultiMediaStream* iface, REFIID riid, void** ppvObject) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IAMMultiMediaStream)) + { + IClassFactory_AddRef(iface); + *ppvObject = This; + return S_OK; + } + + ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); + + return E_NOINTERFACE; +} + +static ULONG WINAPI IAMMultiMediaStreamImpl_AddRef(IAMMultiMediaStream* iface) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + TRACE("(%p/%p)\n", iface, This); + + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI IAMMultiMediaStreamImpl_Release(IAMMultiMediaStream* iface) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p/%p)\n", iface, This); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +/*** IMultiMediaStream methods ***/ +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetInformation(IAMMultiMediaStream* iface, DWORD* pdwFlags, STREAM_TYPE* pStreamType) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p,%p) stub!\n", This, iface, pdwFlags, pStreamType); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetMediaStream(IAMMultiMediaStream* iface, REFMSPID idPurpose, IMediaStream** ppMediaStream) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + MSPID PurposeId; + unsigned int i; + + TRACE("(%p/%p)->(%p,%p)\n", This, iface, idPurpose, ppMediaStream); + + for (i = 0; i < This->nbStreams; i++) + { + IMediaStream_GetInformation(This->pStreams[i], &PurposeId, NULL); + if (IsEqualIID(&PurposeId, idPurpose)) + { + *ppMediaStream = This->pStreams[i]; + IMediaStream_AddRef(*ppMediaStream); + return S_OK; + } + } + + return MS_E_NOSTREAM; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_EnumMediaStreams(IAMMultiMediaStream* iface, LONG Index, IMediaStream** ppMediaStream) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%d,%p) stub!\n", This, iface, Index, ppMediaStream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetState(IAMMultiMediaStream* iface, STREAM_STATE* pCurrentState) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, pCurrentState); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_SetState(IAMMultiMediaStream* iface, STREAM_STATE NewState) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->() stub!\n", This, iface); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetTime(IAMMultiMediaStream* iface, STREAM_TIME* pCurrentTime) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, pCurrentTime); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetDuration(IAMMultiMediaStream* iface, STREAM_TIME* pDuration) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, pDuration); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_Seek(IAMMultiMediaStream* iface, STREAM_TIME SeekTime) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->() stub!\n", This, iface); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetEndOfStream(IAMMultiMediaStream* iface, HANDLE* phEOS) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, phEOS); + + return E_NOTIMPL; +} + +/*** IAMMultiMediaStream methods ***/ +static HRESULT WINAPI IAMMultiMediaStreamImpl_Initialize(IAMMultiMediaStream* iface, STREAM_TYPE StreamType, DWORD dwFlags, IGraphBuilder* pFilterGraph) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + HRESULT hr = S_OK; + + FIXME("(%p/%p)->(%x,%x,%p) partial stub!\n", This, iface, (DWORD)StreamType, dwFlags, pFilterGraph); + + if (pFilterGraph) + { + This->pFilterGraph = pFilterGraph; + IGraphBuilder_AddRef(This->pFilterGraph); + } + else + { + hr = CoCreateInstance(&CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, &IID_IGraphBuilder, (LPVOID*)&This->pFilterGraph); + } + + if (SUCCEEDED(hr)) + { + This->StreamType = StreamType; + } + + return hr; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetFilterGraph(IAMMultiMediaStream* iface, IGraphBuilder** ppGraphBuilder) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppGraphBuilder); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_GetFilter(IAMMultiMediaStream* iface, IMediaStreamFilter** ppFilter) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppFilter); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_AddMediaStream(IAMMultiMediaStream* iface, IUnknown* pStreamObject, const MSPID* PurposeId, + DWORD dwFlags, IMediaStream** ppNewStream) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + HRESULT hr; + IMediaStream* pStream; + IMediaStream** pNewStreams; + + FIXME("(%p/%p)->(%p,%p,%x,%p) partial stub!\n", This, iface, pStreamObject, PurposeId, dwFlags, ppNewStream); + + if (IsEqualGUID(PurposeId, &MSPID_PrimaryVideo)) + hr = DirectDrawMediaStream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream); + else + hr = MediaStream_create((IMultiMediaStream*)iface, PurposeId, This->StreamType, &pStream); + + if (SUCCEEDED(hr)) + { + pNewStreams = CoTaskMemAlloc((This->nbStreams+1)*sizeof(IMediaStream*)); + if (!pNewStreams) + { + IMediaStream_Release(pStream); + return E_OUTOFMEMORY; + } + if (This->nbStreams) + CopyMemory(pNewStreams, This->pStreams, This->nbStreams*sizeof(IMediaStream*)); + CoTaskMemFree(This->pStreams); + This->pStreams = pNewStreams; + This->pStreams[This->nbStreams] = pStream; + This->nbStreams++; + + if (ppNewStream) + *ppNewStream = pStream; + } + + return hr; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenFile(IAMMultiMediaStream* iface, LPCWSTR pszFileName, DWORD dwFlags) +{ + HRESULT ret; + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + IFileSourceFilter *SourceFilter; + IBaseFilter *BaseFilter; + IEnumPins *EnumPins; + IPin *ipin; + PIN_DIRECTION pin_direction; + + TRACE("(%p/%p)->(%s,%x)\n", This, iface, debugstr_w(pszFileName), dwFlags); + + ret = CoCreateInstance(&CLSID_AsyncReader, NULL, CLSCTX_INPROC_SERVER, &IID_IFileSourceFilter, (void**)&SourceFilter); + if(ret != S_OK) + return ret; + + ret = IFileSourceFilter_Load(SourceFilter, pszFileName, NULL); + if(ret != S_OK) + { + IFileSourceFilter_Release(SourceFilter); + return ret; + } + + ret = IFileSourceFilter_QueryInterface(SourceFilter, &IID_IBaseFilter, (void**)&BaseFilter); + if(ret != S_OK) + { + IFileSourceFilter_Release(SourceFilter); + return ret; + } + + ret = IBaseFilter_EnumPins(BaseFilter, &EnumPins); + if(ret != S_OK) + { + goto end; + } + + ret = IEnumPins_Next(EnumPins, 1, &ipin, NULL); + if(ret == S_OK) + { + ret = IPin_QueryDirection(ipin, &pin_direction); + IEnumPins_Release(EnumPins); + if(ret == S_OK && pin_direction == PINDIR_OUTPUT) + This->ipin = ipin; + else + goto end; + } + else + { + IEnumPins_Release(EnumPins); + goto end; + } + + ret = IFilterGraph_QueryInterface(This->pFilterGraph, &IID_IGraphBuilder, (void**)&This->GraphBuilder); + if(ret != S_OK) + { + goto end; + } + + ret = IGraphBuilder_AddSourceFilter(This->GraphBuilder, pszFileName, pszFileName, &BaseFilter); + +end: + IBaseFilter_Release(BaseFilter); + IFileSourceFilter_Release(SourceFilter); + return ret; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_OpenMoniker(IAMMultiMediaStream* iface, IBindCtx* pCtx, IMoniker* pMoniker, DWORD dwFlags) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p,%p,%x) stub!\n", This, iface, pCtx, pMoniker, dwFlags); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IAMMultiMediaStreamImpl_Render(IAMMultiMediaStream* iface, DWORD dwFlags) +{ + IAMMultiMediaStreamImpl *This = (IAMMultiMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%x) partial stub!\n", This, iface, dwFlags); + + if(dwFlags != AMMSF_NOCLOCK) + return E_INVALIDARG; + + return IGraphBuilder_Render(This->GraphBuilder, This->ipin); +} + +static const IAMMultiMediaStreamVtbl AM_Vtbl = +{ + IAMMultiMediaStreamImpl_QueryInterface, + IAMMultiMediaStreamImpl_AddRef, + IAMMultiMediaStreamImpl_Release, + IAMMultiMediaStreamImpl_GetInformation, + IAMMultiMediaStreamImpl_GetMediaStream, + IAMMultiMediaStreamImpl_EnumMediaStreams, + IAMMultiMediaStreamImpl_GetState, + IAMMultiMediaStreamImpl_SetState, + IAMMultiMediaStreamImpl_GetTime, + IAMMultiMediaStreamImpl_GetDuration, + IAMMultiMediaStreamImpl_Seek, + IAMMultiMediaStreamImpl_GetEndOfStream, + IAMMultiMediaStreamImpl_Initialize, + IAMMultiMediaStreamImpl_GetFilterGraph, + IAMMultiMediaStreamImpl_GetFilter, + IAMMultiMediaStreamImpl_AddMediaStream, + IAMMultiMediaStreamImpl_OpenFile, + IAMMultiMediaStreamImpl_OpenMoniker, + IAMMultiMediaStreamImpl_Render +}; Propchange: trunk/reactos/dll/directx/amstream/amstream.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/amstream.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
============================================================================== --- trunk/reactos/dll/directx/amstream/amstream.rbuild (added) +++ trunk/reactos/dll/directx/amstream/amstream.rbuild [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,22 @@ +<module name="amstream" type="win32dll" baseaddress="${BASEADDRESS_AMSTREAM}" installbase="system32" installname="amstream.dll" allowwarnings="true"> + <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> + <importlibrary definition="amstream.spec" /> + <include base="amstream">.</include> + <include base="ReactOS">include/reactos/wine</include> + <define name="_WIN32_WINNT">0x600</define> + <define name="__WINESRC__" /> + <file>amstream.c</file> + <file>main.c</file> + <file>mediastream.c</file> + <file>mediastreamfilter.c</file> + <file>regsvr.c</file> + <file>amstream_i.c</file> + <file>version.rc</file> + <library>wine</library> + <library>strmiids</library> + <library>uuid</library> + <library>ole32</library> + <library>advapi32</library> + <library>kernel32</library> + <library>ntdll</library> +</module> Propchange: trunk/reactos/dll/directx/amstream/amstream.rbuild ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/amstream.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
============================================================================== --- trunk/reactos/dll/directx/amstream/amstream.spec (added) +++ trunk/reactos/dll/directx/amstream/amstream.spec [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,4 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() Propchange: trunk/reactos/dll/directx/amstream/amstream.spec ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/amstream_i.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
============================================================================== --- trunk/reactos/dll/directx/amstream/amstream_i.c (added) +++ trunk/reactos/dll/directx/amstream/amstream_i.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,14 @@ +#include <rpc.h> +#include <rpcndr.h> + +#include <initguid.h> + +#ifdef __cplusplus +extern "C" { +#endif + +DEFINE_GUID(CLSID_MediaStreamFilter, 0x49c47ce0, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45); + +#ifdef __cplusplus +} +#endif Propchange: trunk/reactos/dll/directx/amstream/amstream_i.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/amstream_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/amstr…
============================================================================== --- trunk/reactos/dll/directx/amstream/amstream_private.h (added) +++ trunk/reactos/dll/directx/amstream/amstream_private.h [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,42 @@ +/* + * MultiMedia Streams private interfaces (AMSTREAM.DLL) + * + * Copyright 2004 Christian Costa + * + * This file contains the (internal) driver registration functions, + * driver enumeration APIs and DirectDraw creation functions. + * + * 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 + */ + +#ifndef __AMSTREAM_PRIVATE_INCLUDED__ +#define __AMSTREAM_PRIVATE_INCLUDED__ + +#include <stdarg.h> + +#include "windef.h" +#include "winbase.h" +#include "wtypes.h" +#include "wingdi.h" +#include "winuser.h" +#include "dshow.h" +#include "mmstream.h" + +HRESULT AM_create(IUnknown *pUnkOuter, LPVOID *ppObj); +HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, LPVOID *ppObj); +HRESULT MediaStream_create(IMultiMediaStream* Parent, const MSPID* pPurposeId, STREAM_TYPE StreamType, IMediaStream** ppMediaStream); +HRESULT DirectDrawMediaStream_create(IMultiMediaStream* Parent, const MSPID* pPurposeId, STREAM_TYPE StreamType, IMediaStream** ppMediaStream); + +#endif /* __AMSTREAM_PRIVATE_INCLUDED__ */ Propchange: trunk/reactos/dll/directx/amstream/amstream_private.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/main.…
============================================================================== --- trunk/reactos/dll/directx/amstream/main.c (added) +++ trunk/reactos/dll/directx/amstream/main.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,209 @@ +/* + * MultiMedia Streams Base Functions (AMSTREAM.DLL) + * + * Copyright 2004 Christian Costa + * + * This file contains the (internal) driver registration functions, + * driver enumeration APIs and DirectDraw creation functions. + * + * 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 <stdarg.h> +#include <string.h> + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "winerror.h" + +#include "ole2.h" + +#include "amstream_private.h" +#include "amstream.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(amstream); + +static DWORD dll_ref = 0; + +/* For the moment, do nothing here. */ +BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv) +{ + switch(fdwReason) { + case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls(hInstDLL); + break; + case DLL_PROCESS_DETACH: + break; + } + return TRUE; +} + +/****************************************************************************** + * Multimedia Streams ClassFactory + */ +typedef struct { + IClassFactory ITF_IClassFactory; + + LONG ref; + HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj); +} IClassFactoryImpl; + +struct object_creation_info +{ + const CLSID *clsid; + HRESULT (*pfnCreateInstance)(IUnknown *pUnkOuter, LPVOID *ppObj); +}; + +static const struct object_creation_info object_creation[] = +{ + { &CLSID_AMMultiMediaStream, AM_create }, + { &CLSID_AMDirectDrawStream, AM_create }, + { &CLSID_MediaStreamFilter, MediaStreamFilter_create } +}; + +static HRESULT WINAPI +AMCF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + + if (IsEqualGUID(riid, &IID_IUnknown) + || IsEqualGUID(riid, &IID_IClassFactory)) + { + IClassFactory_AddRef(iface); + *ppobj = This; + return S_OK; + } + + WARN("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppobj); + return E_NOINTERFACE; +} + +static ULONG WINAPI AMCF_AddRef(LPCLASSFACTORY iface) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI AMCF_Release(LPCLASSFACTORY iface) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + + ULONG ref = InterlockedDecrement(&This->ref); + + if (ref == 0) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + + +static HRESULT WINAPI AMCF_CreateInstance(LPCLASSFACTORY iface, LPUNKNOWN pOuter, + REFIID riid, LPVOID *ppobj) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + HRESULT hres; + LPUNKNOWN punk; + + TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj); + + *ppobj = NULL; + hres = This->pfnCreateInstance(pOuter, (LPVOID *) &punk); + if (SUCCEEDED(hres)) { + hres = IUnknown_QueryInterface(punk, riid, ppobj); + IUnknown_Release(punk); + } + return hres; +} + +static HRESULT WINAPI AMCF_LockServer(LPCLASSFACTORY iface,BOOL dolock) +{ + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + FIXME("(%p)->(%d),stub!\n",This,dolock); + return S_OK; +} + +static const IClassFactoryVtbl DSCF_Vtbl = +{ + AMCF_QueryInterface, + AMCF_AddRef, + AMCF_Release, + AMCF_CreateInstance, + AMCF_LockServer +}; + +/******************************************************************************* + * DllGetClassObject [AMSTREAM.@] + * Retrieves class object from a DLL object + * + * NOTES + * Docs say returns STDAPI + * + * PARAMS + * rclsid [I] CLSID for the class object + * riid [I] Reference to identifier of interface for class object + * ppv [O] Address of variable to receive interface pointer for riid + * + * RETURNS + * Success: S_OK + * Failure: CLASS_E_CLASSNOTAVAILABLE, E_OUTOFMEMORY, E_INVALIDARG, + * E_UNEXPECTED + */ +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) +{ + unsigned int i; + IClassFactoryImpl *factory; + + TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + + if ( !IsEqualGUID( &IID_IClassFactory, riid ) + && ! IsEqualGUID( &IID_IUnknown, riid) ) + return E_NOINTERFACE; + + for (i=0; i < sizeof(object_creation)/sizeof(object_creation[0]); i++) + { + if (IsEqualGUID(object_creation[i].clsid, rclsid)) + break; + } + + if (i == sizeof(object_creation)/sizeof(object_creation[0])) + { + FIXME("%s: no class found.\n", debugstr_guid(rclsid)); + return CLASS_E_CLASSNOTAVAILABLE; + } + + factory = HeapAlloc(GetProcessHeap(), 0, sizeof(*factory)); + if (factory == NULL) return E_OUTOFMEMORY; + + factory->ITF_IClassFactory.lpVtbl = &DSCF_Vtbl; + factory->ref = 1; + + factory->pfnCreateInstance = object_creation[i].pfnCreateInstance; + + *ppv = &(factory->ITF_IClassFactory); + return S_OK; +} + +/*********************************************************************** + * DllCanUnloadNow (AMSTREAM.@) + */ +HRESULT WINAPI DllCanUnloadNow(void) +{ + return dll_ref != 0 ? S_FALSE : S_OK; +} Propchange: trunk/reactos/dll/directx/amstream/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/mediastream.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/media…
============================================================================== --- trunk/reactos/dll/directx/amstream/mediastream.c (added) +++ trunk/reactos/dll/directx/amstream/mediastream.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,311 @@ +/* + * Implementation of IMediaStream Interface + * + * Copyright 2005, 2008 Christian Costa + * + * This file contains the (internal) driver registration functions, + * driver enumeration APIs and DirectDraw creation functions. + * + * 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 "wine/debug.h" + +#define COBJMACROS + +#include "winbase.h" +#include "wingdi.h" + +#include "amstream_private.h" +#include "ddstream.h" +#include "amstream.h" + +WINE_DEFAULT_DEBUG_CHANNEL(amstream); + +typedef struct { + IMediaStream lpVtbl; + LONG ref; + IMultiMediaStream* Parent; + MSPID PurposeId; + STREAM_TYPE StreamType; +} IMediaStreamImpl; + +typedef struct { + IDirectDrawMediaStream lpVtbl; + LONG ref; + IMultiMediaStream* Parent; + MSPID PurposeId; + STREAM_TYPE StreamType; +} IDirectDrawMediaStreamImpl; + +static const struct IMediaStreamVtbl MediaStream_Vtbl; +static const struct IDirectDrawMediaStreamVtbl DirectDrawMediaStream_Vtbl; + +HRESULT MediaStream_create(IMultiMediaStream* Parent, const MSPID* pPurposeId, STREAM_TYPE StreamType, IMediaStream** ppMediaStream) +{ + IMediaStreamImpl* object; + + TRACE("(%p,%p,%p)\n", Parent, pPurposeId, ppMediaStream); + + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamImpl)); + if (!object) + { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + } + + object->lpVtbl.lpVtbl = &MediaStream_Vtbl; + object->ref = 1; + + object->Parent = Parent; + object->PurposeId = *pPurposeId; + object->StreamType = StreamType; + + *ppMediaStream = (IMediaStream*)object; + + return S_OK; +} + +/*** IUnknown methods ***/ +static HRESULT WINAPI IMediaStreamImpl_QueryInterface(IMediaStream* iface, REFIID riid, void** ppvObject) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IMediaStream)) + { + IClassFactory_AddRef(iface); + *ppvObject = This; + return S_OK; + } + + ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); + return E_NOINTERFACE; +} + +static ULONG WINAPI IMediaStreamImpl_AddRef(IMediaStream* iface) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + TRACE("(%p/%p)\n", iface, This); + + return InterlockedIncrement(&This->ref); +} + +static ULONG WINAPI IMediaStreamImpl_Release(IMediaStream* iface) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p/%p)\n", iface, This); + + if (!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +/*** IMediaStream methods ***/ +static HRESULT WINAPI IMediaStreamImpl_GetMultiMediaStream(IMediaStream* iface, IMultiMediaStream** ppMultiMediaStream) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream); + + return S_FALSE; +} + + +static HRESULT WINAPI IMediaStreamImpl_GetInformation(IMediaStream* iface, MSPID* pPurposeId, STREAM_TYPE* pType) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + TRACE("(%p/%p)->(%p,%p)\n", This, iface, pPurposeId, pType); + + if (pPurposeId) + *pPurposeId = This->PurposeId; + if (pType) + *pType = This->StreamType; + + return S_OK; +} + +static HRESULT WINAPI IMediaStreamImpl_SetSameFormat(IMediaStream* iface, IMediaStream* pStreamThatHasDesiredFormat, DWORD dwFlags) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p,%x) stub!\n", This, iface, pStreamThatHasDesiredFormat, dwFlags); + + return S_FALSE; +} + +static HRESULT WINAPI IMediaStreamImpl_AllocateSample(IMediaStream* iface, DWORD dwFlags, IStreamSample** ppSample) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%x,%p) stub!\n", This, iface, dwFlags, ppSample); + + return S_FALSE; +} + +static HRESULT WINAPI IMediaStreamImpl_CreateSharedSample(IMediaStream* iface, IStreamSample* pExistingSample, DWORD dwFlags, IStreamSample** ppSample) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%p,%x,%p) stub!\n", This, iface, pExistingSample, dwFlags, ppSample); + + return S_FALSE; +} + +static HRESULT WINAPI IMediaStreamImpl_SendEndOfStream(IMediaStream* iface, DWORD dwFlags) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + FIXME("(%p/%p)->(%x) stub!\n", This, iface, dwFlags); + + return S_FALSE; +} + +static const struct IMediaStreamVtbl MediaStream_Vtbl = +{ + IMediaStreamImpl_QueryInterface, + IMediaStreamImpl_AddRef, + IMediaStreamImpl_Release, + IMediaStreamImpl_GetMultiMediaStream, + IMediaStreamImpl_GetInformation, + IMediaStreamImpl_SetSameFormat, + IMediaStreamImpl_AllocateSample, + IMediaStreamImpl_CreateSharedSample, + IMediaStreamImpl_SendEndOfStream +}; + +HRESULT DirectDrawMediaStream_create(IMultiMediaStream* Parent, const MSPID* pPurposeId, STREAM_TYPE StreamType, IMediaStream** ppMediaStream) +{ + IDirectDrawMediaStreamImpl* object; + + TRACE("(%p,%p,%p)\n", Parent, pPurposeId, ppMediaStream); + + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamImpl)); + if (!object) + { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + } + + object->lpVtbl.lpVtbl = &DirectDrawMediaStream_Vtbl; + object->ref = 1; + + object->Parent = Parent; + object->PurposeId = *pPurposeId; + object->StreamType = StreamType; + + *ppMediaStream = (IMediaStream*)object; + + return S_OK; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_QueryInterface(IDirectDrawMediaStream* iface, REFIID riid, void** ppvObject) +{ + IMediaStreamImpl *This = (IMediaStreamImpl *)iface; + + TRACE("(%p/%p)->(%s,%p)\n", iface, This, debugstr_guid(riid), ppvObject); + + if (IsEqualGUID(riid, &IID_IUnknown) || + IsEqualGUID(riid, &IID_IMediaStream) || + IsEqualGUID(riid, &IID_IDirectDrawMediaStream)) + { + IClassFactory_AddRef(iface); + *ppvObject = This; + return S_OK; + } + + ERR("(%p)->(%s,%p),not found\n",This,debugstr_guid(riid),ppvObject); + return E_NOINTERFACE; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetFormat(IDirectDrawMediaStream* iface, DDSURFACEDESC *pDDSDCurrent, + IDirectDrawPalette **ppDirectDrawPalette, DDSURFACEDESC *pDDSDDesired, DWORD *pdwFlags) +{ + FIXME("(%p)->(%p,%p,%p,%p) stub!\n", iface, pDDSDCurrent, ppDirectDrawPalette, pDDSDDesired, pdwFlags); + + return E_NOTIMPL; + +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetFormat(IDirectDrawMediaStream* iface, const DDSURFACEDESC *pDDSurfaceDesc, + IDirectDrawPalette *pDirectDrawPalette) +{ + FIXME("(%p)->(%p,%p) stub!\n", iface, pDDSurfaceDesc, pDirectDrawPalette); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetDirectDraw(IDirectDrawMediaStream* iface, IDirectDraw **ppDirectDraw) +{ + FIXME("(%p)->(%p) stub!\n", iface, ppDirectDraw); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_SetDirectDraw(IDirectDrawMediaStream* iface, IDirectDraw *pDirectDraw) +{ + FIXME("(%p)->(%p) stub!\n", iface, pDirectDraw); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_CreateSample(IDirectDrawMediaStream* iface, IDirectDrawSurface *pSurface, const RECT *pRect, + DWORD dwFlags, IDirectDrawStreamSample **ppSample) +{ + FIXME("(%p)->(%p,%p,%x,%p) stub!\n", iface, pSurface, pRect, dwFlags, ppSample); + + return E_NOTIMPL; +} + +static HRESULT WINAPI IDirectDrawMediaStreamImpl_GetTimePerFrame(IDirectDrawMediaStream* iface, STREAM_TIME *pFrameTime) +{ + FIXME("(%p)->(%p) stub!\n", iface, pFrameTime); + + return E_NOTIMPL; +} + +/* Note: Hack so we can reuse the old functions without compiler warnings */ +#if !defined(__STRICT_ANSI__) && defined(__GNUC__) +# define XCAST(fun) (typeof(DirectDrawMediaStream_Vtbl.fun)) +#else +# define XCAST(fun) (void*) +#endif + +static const struct IDirectDrawMediaStreamVtbl DirectDrawMediaStream_Vtbl = +{ + IDirectDrawMediaStreamImpl_QueryInterface, + XCAST(AddRef)IMediaStreamImpl_AddRef, + XCAST(Release)IMediaStreamImpl_Release, + XCAST(GetMultiMediaStream)IMediaStreamImpl_GetMultiMediaStream, + XCAST(GetInformation)IMediaStreamImpl_GetInformation, + XCAST(SetSameFormat)IMediaStreamImpl_SetSameFormat, + XCAST(AllocateSample)IMediaStreamImpl_AllocateSample, + XCAST(CreateSharedSample)IMediaStreamImpl_CreateSharedSample, + XCAST(SendEndOfStream)IMediaStreamImpl_SendEndOfStream, + IDirectDrawMediaStreamImpl_GetFormat, + IDirectDrawMediaStreamImpl_SetFormat, + IDirectDrawMediaStreamImpl_GetDirectDraw, + IDirectDrawMediaStreamImpl_SetDirectDraw, + IDirectDrawMediaStreamImpl_CreateSample, + IDirectDrawMediaStreamImpl_GetTimePerFrame +}; +#undef XCAST Propchange: trunk/reactos/dll/directx/amstream/mediastream.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/mediastreamfilter.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/media…
============================================================================== --- trunk/reactos/dll/directx/amstream/mediastreamfilter.c (added) +++ trunk/reactos/dll/directx/amstream/mediastreamfilter.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,313 @@ +/* + * Implementation of MediaStream Filter + * + * Copyright 2008 Christian Costa + * + * This file contains the (internal) driver registration functions, + * driver enumeration APIs and DirectDraw creation functions. + * + * 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 "wine/debug.h" + +#define COBJMACROS + +#include "winbase.h" +#include "wingdi.h" + +#include "amstream_private.h" +#include "amstream.h" + +#include "ddstream.h" + +WINE_DEFAULT_DEBUG_CHANNEL(amstream); + +typedef struct { + IMediaStreamFilter lpVtbl; + LONG ref; + CRITICAL_SECTION csFilter; + FILTER_STATE state; + REFERENCE_TIME rtStreamStart; + IReferenceClock * pClock; + FILTER_INFO filterInfo; +} IMediaStreamFilterImpl; + +static const struct IMediaStreamFilterVtbl MediaStreamFilter_Vtbl; + +HRESULT MediaStreamFilter_create(IUnknown *pUnkOuter, LPVOID *ppObj) +{ + IMediaStreamFilterImpl* object; + + TRACE("(%p,%p)\n", pUnkOuter, ppObj); + + if( pUnkOuter ) + return CLASS_E_NOAGGREGATION; + + object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IMediaStreamFilterImpl)); + if (!object) + { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + } + + object->lpVtbl.lpVtbl = &MediaStreamFilter_Vtbl; + object->ref = 1; + + *ppObj = object; + + return S_OK; +} + +/*** IUnknown methods ***/ + +static HRESULT WINAPI MediaStreamFilterImpl_QueryInterface(IMediaStreamFilter * iface, REFIID riid, LPVOID * ppv) +{ + IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface; + + TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv); + + *ppv = NULL; + + if (IsEqualIID(riid, &IID_IUnknown)) + *ppv = This; + else if (IsEqualIID(riid, &IID_IPersist)) + *ppv = This; + else if (IsEqualIID(riid, &IID_IMediaFilter)) + *ppv = This; + else if (IsEqualIID(riid, &IID_IBaseFilter)) + *ppv = This; + else if (IsEqualIID(riid, &IID_IMediaStreamFilter)) + *ppv = This; + + if (*ppv) + { + IUnknown_AddRef((IUnknown *)(*ppv)); + return S_OK; + } + + return E_NOINTERFACE; +} + +static ULONG WINAPI MediaStreamFilterImpl_AddRef(IMediaStreamFilter * iface) +{ + IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface; + ULONG refCount = InterlockedIncrement(&This->ref); + + TRACE("(%p)->() AddRef from %d\n", iface, refCount - 1); + + return refCount; +} + +static ULONG WINAPI MediaStreamFilterImpl_Release(IMediaStreamFilter * iface) +{ + IMediaStreamFilterImpl *This = (IMediaStreamFilterImpl *)iface; + ULONG refCount = InterlockedDecrement(&This->ref); + + TRACE("(%p)->() Release from %d\n", iface, refCount + 1); + + if (!refCount) + { + This->lpVtbl.lpVtbl = NULL; + HeapFree(GetProcessHeap(), 0, This); + } + + return refCount; +} + +/*** IPersist methods ***/ + +static HRESULT WINAPI MediaStreamFilterImpl_GetClassID(IMediaStreamFilter * iface, CLSID * pClsid) +{ + TRACE("(%p)->(%p)\n", iface, pClsid); + + *pClsid = CLSID_MediaStreamFilter; + + return S_OK; +} + +/*** IMediaFilter methods ***/ + +static HRESULT WINAPI MediaStreamFilterImpl_Stop(IMediaStreamFilter * iface) +{ + FIXME("(%p)->(): Stub!\n", iface); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_Pause(IMediaStreamFilter * iface) +{ + FIXME("(%p)->(): Stub!\n", iface); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_Run(IMediaStreamFilter * iface, REFERENCE_TIME tStart) +{ + FIXME("(%p)->(%s): Stub!\n", iface, wine_dbgstr_longlong(tStart)); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_GetState(IMediaStreamFilter * iface, DWORD dwMilliSecsTimeout, FILTER_STATE *pState) +{ + FIXME("(%p)->(%d,%p): Stub!\n", iface, dwMilliSecsTimeout, pState); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_SetSyncSource(IMediaStreamFilter * iface, IReferenceClock *pClock) +{ + TRACE("(%p)->(%p): Stub!\n", iface, pClock); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_GetSyncSource(IMediaStreamFilter * iface, IReferenceClock **ppClock) +{ + FIXME("(%p)->(%p): Stub!\n", iface, ppClock); + + return E_NOTIMPL; +} + +/*** IBaseFilter methods ***/ + +static HRESULT WINAPI MediaStreamFilterImpl_EnumPins(IMediaStreamFilter * iface, IEnumPins **ppEnum) +{ + FIXME("(%p)->(%p): Stub!\n", iface, ppEnum); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_FindPin(IMediaStreamFilter * iface, LPCWSTR Id, IPin **ppPin) +{ + FIXME("(%p)->(%s,%p): Stub!\n", iface, debugstr_w(Id), ppPin); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_QueryFilterInfo(IMediaStreamFilter * iface, FILTER_INFO *pInfo) +{ + FIXME("(%p)->(%p): Stub!\n", iface, pInfo); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_JoinFilterGraph(IMediaStreamFilter * iface, IFilterGraph *pGraph, LPCWSTR pName) +{ + FIXME("(%p)->(%p, %s): Stub!\n", iface, pGraph, debugstr_w(pName)); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_QueryVendorInfo(IMediaStreamFilter * iface, LPWSTR *pVendorInfo) +{ + FIXME("(%p)->(%p): Stub!\n", iface, pVendorInfo); + + return E_NOTIMPL; +} + +/*** IMediaStreamFilter methods ***/ + +static HRESULT WINAPI MediaStreamFilterImpl_AddMediaStream(IMediaStreamFilter* iface, IAMMediaStream *pAMMediaStream) +{ + FIXME("(%p)->(%p): Stub!\n", iface, pAMMediaStream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_GetMediaStream(IMediaStreamFilter* iface, REFMSPID idPurpose, IMediaStream **ppMediaStream) +{ + FIXME("(%p)->(%s,%p): Stub!\n", iface, debugstr_guid(idPurpose), ppMediaStream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_EnumMediaStreams(IMediaStreamFilter* iface, LONG Index, IMediaStream **ppMediaStream) +{ + FIXME("(%p)->(%d,%p): Stub!\n", iface, Index, ppMediaStream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_SupportSeeking(IMediaStreamFilter* iface, BOOL bRenderer) +{ + FIXME("(%p)->(%d): Stub!\n", iface, bRenderer); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_ReferenceTimeToStreamTime(IMediaStreamFilter* iface, REFERENCE_TIME *pTime) +{ + FIXME("(%p)->(%p): Stub!\n", iface, pTime); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_GetCurrentStreamTime(IMediaStreamFilter* iface, REFERENCE_TIME *pCurrentStreamTime) +{ + FIXME("(%p)->(%p): Stub!\n", iface, pCurrentStreamTime); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_WaitUntil(IMediaStreamFilter* iface, REFERENCE_TIME WaitStreamTime) +{ + FIXME("(%p)->(%s): Stub!\n", iface, wine_dbgstr_longlong(WaitStreamTime)); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_Flush(IMediaStreamFilter* iface, BOOL bCancelEOS) +{ + FIXME("(%p)->(%d): Stub!\n", iface, bCancelEOS); + + return E_NOTIMPL; +} + +static HRESULT WINAPI MediaStreamFilterImpl_EndOfStream(IMediaStreamFilter* iface) +{ + FIXME("(%p)->(): Stub!\n", iface); + + return E_NOTIMPL; +} + +static const IMediaStreamFilterVtbl MediaStreamFilter_Vtbl = +{ + MediaStreamFilterImpl_QueryInterface, + MediaStreamFilterImpl_AddRef, + MediaStreamFilterImpl_Release, + MediaStreamFilterImpl_GetClassID, + MediaStreamFilterImpl_Stop, + MediaStreamFilterImpl_Pause, + MediaStreamFilterImpl_Run, + MediaStreamFilterImpl_GetState, + MediaStreamFilterImpl_SetSyncSource, + MediaStreamFilterImpl_GetSyncSource, + MediaStreamFilterImpl_EnumPins, + MediaStreamFilterImpl_FindPin, + MediaStreamFilterImpl_QueryFilterInfo, + MediaStreamFilterImpl_JoinFilterGraph, + MediaStreamFilterImpl_QueryVendorInfo, + MediaStreamFilterImpl_AddMediaStream, + MediaStreamFilterImpl_GetMediaStream, + MediaStreamFilterImpl_EnumMediaStreams, + MediaStreamFilterImpl_SupportSeeking, + MediaStreamFilterImpl_ReferenceTimeToStreamTime, + MediaStreamFilterImpl_GetCurrentStreamTime, + MediaStreamFilterImpl_WaitUntil, + MediaStreamFilterImpl_Flush, + MediaStreamFilterImpl_EndOfStream +}; Propchange: trunk/reactos/dll/directx/amstream/mediastreamfilter.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/regsvr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/regsv…
============================================================================== --- trunk/reactos/dll/directx/amstream/regsvr.c (added) +++ trunk/reactos/dll/directx/amstream/regsvr.c [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,498 @@ +/* + * self-registerable dll functions for amstream.dll + * + * Copyright (C) 2003 John K. Hohm + * + * 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 <stdarg.h> +#include <string.h> + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "wingdi.h" +#include "winreg.h" +#include "winerror.h" + +#include "ole2.h" + +#include "amstream.h" + +#include "wine/debug.h" +#include "wine/unicode.h" + +WINE_DEFAULT_DEBUG_CHANNEL(amstream); + +/* + * Near the bottom of this file are the exported DllRegisterServer and + * DllUnregisterServer, which make all this worthwhile. + */ + +/*********************************************************************** + * interface for self-registering + */ +struct regsvr_interface +{ + IID const *iid; /* NULL for end of list */ + LPCSTR name; /* can be NULL to omit */ + IID const *base_iid; /* can be NULL to omit */ + int num_methods; /* can be <0 to omit */ + CLSID const *ps_clsid; /* can be NULL to omit */ + CLSID const *ps_clsid32; /* can be NULL to omit */ +}; + +static HRESULT register_interfaces(struct regsvr_interface const *list); +static HRESULT unregister_interfaces(struct regsvr_interface const *list); + +struct regsvr_coclass +{ + CLSID const *clsid; /* NULL for end of list */ + LPCSTR name; /* can be NULL to omit */ + LPCSTR ips; /* can be NULL to omit */ + LPCSTR ips32; /* can be NULL to omit */ + LPCSTR ips32_tmodel; /* can be NULL to omit */ + LPCSTR progid; /* can be NULL to omit */ + LPCSTR viprogid; /* can be NULL to omit */ + LPCSTR progid_extra; /* can be NULL to omit */ +}; + +static HRESULT register_coclasses(struct regsvr_coclass const *list); +static HRESULT unregister_coclasses(struct regsvr_coclass const *list); + +/*********************************************************************** + * static string constants + */ +static WCHAR const interface_keyname[10] = { + 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 }; +static WCHAR const base_ifa_keyname[14] = { + 'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', + 'e', 0 }; +static WCHAR const num_methods_keyname[11] = { + 'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 }; +static WCHAR const ps_clsid_keyname[15] = { + 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', + 'i', 'd', 0 }; +static WCHAR const ps_clsid32_keyname[17] = { + 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', + 'i', 'd', '3', '2', 0 }; +static WCHAR const clsid_keyname[6] = { + 'C', 'L', 'S', 'I', 'D', 0 }; +static WCHAR const curver_keyname[7] = { + 'C', 'u', 'r', 'V', 'e', 'r', 0 }; +static WCHAR const ips_keyname[13] = { + 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', + 0 }; +static WCHAR const ips32_keyname[15] = { + 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', + '3', '2', 0 }; +static WCHAR const progid_keyname[7] = { + 'P', 'r', 'o', 'g', 'I', 'D', 0 }; +static WCHAR const viprogid_keyname[25] = { + 'V', 'e', 'r', 's', 'i', 'o', 'n', 'I', 'n', 'd', 'e', 'p', + 'e', 'n', 'd', 'e', 'n', 't', 'P', 'r', 'o', 'g', 'I', 'D', + 0 }; +static char const tmodel_valuename[] = "ThreadingModel"; + +/*********************************************************************** + * static helper functions + */ +static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid); +static LONG register_key_defvalueW(HKEY base, WCHAR const *name, + WCHAR const *value); +static LONG register_key_defvalueA(HKEY base, WCHAR const *name, + char const *value); +static LONG register_progid(WCHAR const *clsid, + char const *progid, char const *curver_progid, + char const *name, char const *extra); + +/*********************************************************************** + * register_interfaces + */ +static HRESULT register_interfaces(struct regsvr_interface const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY interface_key; + + res = RegCreateKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &interface_key, NULL); + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->iid; ++list) { + WCHAR buf[39]; + HKEY iid_key; + + StringFromGUID2(list->iid, buf, 39); + res = RegCreateKeyExW(interface_key, buf, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &iid_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_interface_key; + + if (list->name) { + res = RegSetValueExA(iid_key, NULL, 0, REG_SZ, + (CONST BYTE*)(list->name), + strlen(list->name) + 1); + if (res != ERROR_SUCCESS) goto error_close_iid_key; + } + + if (list->base_iid) { + res = register_key_guid(iid_key, base_ifa_keyname, list->base_iid); + if (res != ERROR_SUCCESS) goto error_close_iid_key; + } + + if (0 <= list->num_methods) { + static WCHAR const fmt[3] = { '%', 'd', 0 }; + HKEY key; + + res = RegCreateKeyExW(iid_key, num_methods_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &key, NULL); + if (res != ERROR_SUCCESS) goto error_close_iid_key; + + sprintfW(buf, fmt, list->num_methods); + res = RegSetValueExW(key, NULL, 0, REG_SZ, + (CONST BYTE*)buf, + (lstrlenW(buf) + 1) * sizeof(WCHAR)); + RegCloseKey(key); + + if (res != ERROR_SUCCESS) goto error_close_iid_key; + } + + if (list->ps_clsid) { + res = register_key_guid(iid_key, ps_clsid_keyname, list->ps_clsid); + if (res != ERROR_SUCCESS) goto error_close_iid_key; + } + + if (list->ps_clsid32) { + res = register_key_guid(iid_key, ps_clsid32_keyname, list->ps_clsid32); + if (res != ERROR_SUCCESS) goto error_close_iid_key; + } + + error_close_iid_key: + RegCloseKey(iid_key); + } + +error_close_interface_key: + RegCloseKey(interface_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * unregister_interfaces + */ +static HRESULT unregister_interfaces(struct regsvr_interface const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY interface_key; + + res = RegOpenKeyExW(HKEY_CLASSES_ROOT, interface_keyname, 0, + KEY_READ | KEY_WRITE, &interface_key); + if (res == ERROR_FILE_NOT_FOUND) return S_OK; + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->iid; ++list) { + WCHAR buf[39]; + + StringFromGUID2(list->iid, buf, 39); + res = RegDeleteTreeW(interface_key, buf); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + } + + RegCloseKey(interface_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * register_coclasses + */ +static HRESULT register_coclasses(struct regsvr_coclass const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY coclass_key; + + res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL); + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->clsid; ++list) { + WCHAR buf[39]; + HKEY clsid_key; + + StringFromGUID2(list->clsid, buf, 39); + res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + + if (list->name) { + res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ, + (CONST BYTE*)(list->name), + strlen(list->name) + 1); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->ips) { + res = register_key_defvalueA(clsid_key, ips_keyname, list->ips); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->ips32) { + HKEY ips32_key; + + res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, + &ips32_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ, + (CONST BYTE*)list->ips32, + lstrlenA(list->ips32) + 1); + if (res == ERROR_SUCCESS && list->ips32_tmodel) + res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ, + (CONST BYTE*)list->ips32_tmodel, + strlen(list->ips32_tmodel) + 1); + RegCloseKey(ips32_key); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->progid) { + res = register_key_defvalueA(clsid_key, progid_keyname, + list->progid); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = register_progid(buf, list->progid, NULL, + list->name, list->progid_extra); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->viprogid) { + res = register_key_defvalueA(clsid_key, viprogid_keyname, + list->viprogid); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = register_progid(buf, list->viprogid, list->progid, + list->name, list->progid_extra); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + error_close_clsid_key: + RegCloseKey(clsid_key); + } + +error_close_coclass_key: + RegCloseKey(coclass_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * unregister_coclasses + */ +static HRESULT unregister_coclasses(struct regsvr_coclass const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY coclass_key; + + res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, + KEY_READ | KEY_WRITE, &coclass_key); + if (res == ERROR_FILE_NOT_FOUND) return S_OK; + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->clsid; ++list) { + WCHAR buf[39]; + + StringFromGUID2(list->clsid, buf, 39); + res = RegDeleteTreeW(coclass_key, buf); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + + if (list->progid) { + res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + } + + if (list->viprogid) { + res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + } + } + +error_close_coclass_key: + RegCloseKey(coclass_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * regsvr_key_guid + */ +static LONG register_key_guid(HKEY base, WCHAR const *name, GUID const *guid) +{ + WCHAR buf[39]; + + StringFromGUID2(guid, buf, 39); + return register_key_defvalueW(base, name, buf); +} + +/*********************************************************************** + * regsvr_key_defvalueW + */ +static LONG register_key_defvalueW( + HKEY base, + WCHAR const *name, + WCHAR const *value) +{ + LONG res; + HKEY key; + + res = RegCreateKeyExW(base, name, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &key, NULL); + if (res != ERROR_SUCCESS) return res; + res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value, + (lstrlenW(value) + 1) * sizeof(WCHAR)); + RegCloseKey(key); + return res; +} + +/*********************************************************************** + * regsvr_key_defvalueA + */ +static LONG register_key_defvalueA( + HKEY base, + WCHAR const *name, + char const *value) +{ + LONG res; + HKEY key; + + res = RegCreateKeyExW(base, name, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &key, NULL); + if (res != ERROR_SUCCESS) return res; + res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value, + lstrlenA(value) + 1); + RegCloseKey(key); + return res; +} + +/*********************************************************************** + * regsvr_progid + */ +static LONG register_progid( + WCHAR const *clsid, + char const *progid, + char const *curver_progid, + char const *name, + char const *extra) +{ + LONG res; + HKEY progid_key; + + res = RegCreateKeyExA(HKEY_CLASSES_ROOT, progid, 0, + NULL, 0, KEY_READ | KEY_WRITE, NULL, + &progid_key, NULL); + if (res != ERROR_SUCCESS) return res; + + if (name) { + res = RegSetValueExA(progid_key, NULL, 0, REG_SZ, + (CONST BYTE*)name, strlen(name) + 1); + if (res != ERROR_SUCCESS) goto error_close_progid_key; + } + + if (clsid) { + res = register_key_defvalueW(progid_key, clsid_keyname, clsid); + if (res != ERROR_SUCCESS) goto error_close_progid_key; + } + + if (curver_progid) { + res = register_key_defvalueA(progid_key, curver_keyname, + curver_progid); + if (res != ERROR_SUCCESS) goto error_close_progid_key; + } + + if (extra) { + HKEY extra_key; + + res = RegCreateKeyExA(progid_key, extra, 0, + NULL, 0, KEY_READ | KEY_WRITE, NULL, + &extra_key, NULL); + if (res == ERROR_SUCCESS) + RegCloseKey(extra_key); + } + +error_close_progid_key: + RegCloseKey(progid_key); + return res; +} + +/*********************************************************************** + * coclass list + */ +static struct regsvr_coclass const coclass_list[] = { + { &CLSID_AMMultiMediaStream, + "ActiveMovie MultiMedia Stream", + NULL, + "amstream.dll", + "Both" + }, + + { &CLSID_AMDirectDrawStream, + "ActiveMovie MultiMedia Stream", + NULL, + "amstream.dll", + "Both" + }, + + { NULL } /* list terminator */ +}; + +/*********************************************************************** + * interface list + */ + +static struct regsvr_interface const interface_list[] = { + { NULL } /* list terminator */ +}; + +/*********************************************************************** + * DllRegisterServer (AMSTREAM.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + HRESULT hr; + + TRACE("\n"); + + hr = register_coclasses(coclass_list); + if (SUCCEEDED(hr)) + hr = register_interfaces(interface_list); + return hr; +} + +/*********************************************************************** + * DllUnregisterServer (AMSTREAM.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + HRESULT hr; + + TRACE("\n"); + + hr = unregister_coclasses(coclass_list); + if (SUCCEEDED(hr)) + hr = unregister_interfaces(interface_list); + return hr; +} Propchange: trunk/reactos/dll/directx/amstream/regsvr.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/directx/amstream/version.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/amstream/versi…
============================================================================== --- trunk/reactos/dll/directx/amstream/version.rc (added) +++ trunk/reactos/dll/directx/amstream/version.rc [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,0 +1,26 @@ +/* + * Copyright (c) 2004 Christian Costa + * + * 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 + */ + +#define WINE_FILEDESCRIPTION_STR "Wine AMStream dll" +#define WINE_FILENAME_STR "amstream.dll" +#define WINE_FILEVERSION 6,5,1,900 +#define WINE_FILEVERSION_STR "6.5.1.900" +#define WINE_PRODUCTVERSION 6,5,1,900 +#define WINE_PRODUCTVERSION_STR "6.5" + +#include "wine/wine_common_ver.rc" Propchange: trunk/reactos/dll/directx/amstream/version.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/directx/directx.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/directx.rbuild…
============================================================================== --- trunk/reactos/dll/directx/directx.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/directx/directx.rbuild [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -1,6 +1,9 @@ <?xml version="1.0"?> <!DOCTYPE group SYSTEM "../../tools/rbuild/project.dtd"> <group xmlns:xi="
http://www.w3.org/2001/XInclude
"> + <directory name="amstream"> + <xi:include href="amstream/amstream.rbuild" /> + </directory> <directory name="d3d8thk"> <xi:include href="d3d8thk/d3d8thk.rbuild" /> </directory> Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sat Apr 11 11:24:37 2009 @@ -30,11 +30,15 @@ The following libraries are shared with Wine. +reactos/dll/directx/amstream # Autosync reactos/dll/directx/dinput # Synced to Wine-1_1_4 reactos/dll/directx/dinput8 # Synced to Wine-1_1_4 reactos/dll/directx/dplay # Synced to Wine-0_9_5 reactos/dll/directx/dplayx # Synced to Wine-0_9_5 reactos/dll/directx/dxdiagn # Synced to Wine-0_9_5 +reactos/dll/directx/msdmo # Autosync +reactos/dll/directx/qedit # Autosync +reactos/dll/directx/quartz # Autosync reactos/dll/win32/advpack # Autosync reactos/dll/win32/atl # Autosync reactos/dll/win32/avifil32 # Autosync
15 years, 9 months
1
0
0
0
← Newer
1
...
30
31
32
33
34
35
36
...
48
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Results per page:
10
25
50
100
200