diff --git a/dlls/wineqtdecoder/qtdatahandler.c b/dlls/wineqtdecoder/qtdatahandler.c index cd3207757c6..f09014c0ffa 100644 --- a/dlls/wineqtdecoder/qtdatahandler.c +++ b/dlls/wineqtdecoder/qtdatahandler.c @@ -406,6 +406,22 @@ static pascal ComponentResult myDataHPlaybackHints(DataHandler dh, long flags, return noErr; } +static pascal ComponentResult myDataHPlaybackHints64(DataHandler dh, long flags, + wide *minFileOffset, wide *maxFileOffset, + long bytesPerSecond) +{ + if (TRACE_ON(qtdatahandler)) + { + SInt64 minFileOffset64 = WideToSInt64(*minFileOffset); + LONGLONG minFileOffsetLL = minFileOffset64; + SInt64 maxFileOffset64 = WideToSInt64(*maxFileOffset); + LONGLONG maxFileOffsetLL = maxFileOffset64; + + TRACE("%s %s %li\n",wine_dbgstr_longlong(minFileOffsetLL), wine_dbgstr_longlong(maxFileOffsetLL), bytesPerSecond); + } + return noErr; +} + static pascal ComponentResult myDataHGetFileSize64(DataHandler dh, wide * fileSize) { Handle storage = GetComponentInstanceStorage(dh); @@ -480,7 +496,7 @@ static pascal ComponentResult myDataHScheduleData64( DataHandler dh, LONGLONG offset = fileOffset64; BYTE* buffer = (BYTE*)PlaceToPutDataPtr; - TRACE("%p %p %lli %li %li %p %p\n",dh, PlaceToPutDataPtr, offset, DataSize, RefCon, scheduleRec, CompletionRtn); + TRACE("%p %p %s %li %li %p %p\n",dh, PlaceToPutDataPtr, wine_dbgstr_longlong(offset), DataSize, RefCon, scheduleRec, CompletionRtn); hr = IAsyncReader_SyncRead(data->dataRef.pReader, offset, DataSize, buffer); TRACE("result %x\n",hr); @@ -685,7 +701,14 @@ static const struct { LPVOID proc; ProcInfoType type;} componentFunctions_2[] = | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(unsigned long))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) }, /* kDataHPlaybackHintsSelect 0x103 */ - {NULL, 0}, /* kDataHPlaybackHints64Select 0x10E */ + {myDataHPlaybackHints64, kPascalStackBased + | RESULT_SIZE(SIZE_CODE(sizeof(ComponentResult))) + | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(DataHandler))) + | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) + | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(wide*))) + | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(wide*))) + | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))) +}, /* kDataHPlaybackHints64Select 0x10E */ {NULL, 0}, /* kDataHGetDataRateSelect 0x110 */ {NULL, 0}, /* kDataHSetTimeHintsSelect 0x111 */ }; @@ -726,6 +749,8 @@ static pascal ComponentResult myComponentCanDo(ComponentInstance ci, SInt16 ftnN return TRUE; if (ftnNumber == kDataHPlaybackHintsSelect) return TRUE; + if (ftnNumber == kDataHPlaybackHints64Select) + return TRUE; if (ftnNumber > kDataHGetDataAvailability64Select) return FALSE; TRACE("impl? %i\n",(componentFunctions[ftnNumber].proc != NULL)); @@ -758,6 +783,8 @@ static pascal ComponentResult myComponentRoutineProc ( ComponentParameters * cp, return callOurFunction(myComponentCanDo, uppCallComponentCanDoProcInfo, cp); case kDataHPlaybackHintsSelect: return callOurFunction(componentFunctions_2[0].proc, componentFunctions_2[0].type, cp); + case kDataHPlaybackHints64Select: + return callOurFunction(componentFunctions_2[1].proc, componentFunctions_2[1].type, cp); } if (cp->what > 0 && cp->what <=kDataHGetDataAvailability64Select && componentFunctions[cp->what].proc)