Changeset 980
- Timestamp:
- 12/03/08 13:57:17 (1 month ago)
- Files:
-
- trunk/FFusionCodec.c (modified) (1 diff)
- trunk/FrameBuffer.c (modified) (5 diffs)
- trunk/FrameBuffer.h (modified) (1 diff)
- trunk/Subtitles/SubImport.mm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/FFusionCodec.c
r976 r980 1017 1017 myDrp->frameNumber = p->frameNumber; 1018 1018 myDrp->GOPStartFrameNumber = glob->begin.lastIFrame; 1019 frameData->hold = 0;1020 if(frameData->prereqFrame)1021 frameData->prereqFrame->hold = 1;1022 1019 return noErr; 1023 1020 } trunk/FrameBuffer.c
r976 r980 40 40 free(data->previousData); 41 41 } 42 av_free(data->ringBuffer); 42 43 } 43 44 … … 92 93 { 93 94 expansion(data, dataSize); 95 data->ringWrite = dataSize; 94 96 return data->ringBuffer; 95 97 } … … 113 115 FrameData *dest = data->frames + data->frameWrite; 114 116 115 uint8_t *saveBuffer = insertIntoBuffer(data, buffer, dataSize); 116 dest->buffer = saveBuffer; 117 if(data->unparsedFrames.buffer == buffer) 118 { 119 //This was an unparsed frame, don't memcpy; it's already in the correct place. 120 dest->buffer = buffer; 121 data->unparsedFrames.buffer += dataSize; 122 data->unparsedFrames.dataSize -= dataSize; 123 } 124 else 125 { 126 uint8_t *saveBuffer = insertIntoBuffer(data, buffer, dataSize); 127 dest->buffer = saveBuffer; 128 } 117 129 dest->dataSize = dataSize; 118 130 dest->type = type; … … 129 141 FrameData *unparsed = &(data->unparsedFrames); 130 142 131 unparsed->buffer = insertIntoBuffer(data, buffer, bufferSize); 132 if (unparsed->buffer) { 133 memcpy(unparsed->buffer, buffer, bufferSize); 134 unparsed->dataSize = bufferSize; 135 } 136 } 137 143 if(unparsed->buffer == buffer) 144 { 145 //This part was already unparsed; don't memcpy again 146 unparsed->dataSize = bufferSize; 147 } 148 else 149 { 150 unparsed->buffer = insertIntoBuffer(data, buffer, bufferSize); 151 if (unparsed->buffer) { 152 memcpy(unparsed->buffer, buffer, bufferSize); 153 unparsed->dataSize = bufferSize; 154 } 155 } 156 } 157 138 158 void FFusionDataReadUnparsed(FFusionData *data) 139 159 { … … 155 175 return; 156 176 157 if(toData->prereqFrame != NULL && toData->prereqFrame->hold)177 if(toData->prereqFrame != NULL) 158 178 return; 159 179 trunk/FrameBuffer.h
r976 r980 19 19 short skippabble; 20 20 short decoded; 21 short hold;22 21 FrameData *prereqFrame; /* This is the frame's data which must be decoded to fully display this frame */ 23 22 FrameData *nextFrame; /* This is the next frame to decode if this one is already decoded. This is for predictive decoding */ trunk/Subtitles/SubImport.mm
r979 r980 65 65 66 66 //Use ugly transparency ("transparent" blend mode) for files imported in Front Row 67 //At the moment it doesn't support graphicsModePreBlackAlpha static bool ShouldEngageFrontRowHack(void) 67 //At the moment it doesn't support graphicsModePreBlackAlpha 68 static bool ShouldEngageFrontRowHack(void) 68 69 { 69 70 bool ret;
