Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Unified Diff: Source/WebCore/platform/graphics/win/QTDecompressionSession.cpp

Issue 13642009: WebCore: Remove PLATFORM(WIN) files we do not use. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/platform/graphics/win/QTDecompressionSession.cpp
diff --git a/Source/WebCore/platform/graphics/win/QTDecompressionSession.cpp b/Source/WebCore/platform/graphics/win/QTDecompressionSession.cpp
deleted file mode 100644
index eeb3ca77c2c8c87f97791445d8fddad30a886ea8..0000000000000000000000000000000000000000
--- a/Source/WebCore/platform/graphics/win/QTDecompressionSession.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2010 Apple, Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "config.h"
-
-#include "QTDecompressionSession.h"
-
-#include <ImageCompression.h>
-#include <algorithm>
-
-class QTDecompressionSessionClient {
-public:
- static void trackingCallback(void *decompressionTrackingRefCon, OSStatus,
- ICMDecompressionTrackingFlags decompressionTrackingFlags, CVPixelBufferRef pixelBuffer,
- TimeValue64, TimeValue64, ICMValidTimeFlags, void *, void *)
- {
- QTDecompressionSession* session = static_cast<QTDecompressionSession*>(decompressionTrackingRefCon);
- ASSERT(session);
-
- if (decompressionTrackingFlags & kICMDecompressionTracking_FrameDecoded)
- session->m_latestFrame = QTPixelBuffer(pixelBuffer);
- }
-};
-
-PassOwnPtr<QTDecompressionSession> QTDecompressionSession::create(unsigned long pixelFormat, size_t width, size_t height)
-{
- return adoptPtr(new QTDecompressionSession(pixelFormat, width, height));
-}
-
-QTDecompressionSession::QTDecompressionSession(unsigned long pixelFormat, size_t width, size_t height)
- : m_session(0)
- , m_pixelFormat(pixelFormat)
- , m_width(width)
- , m_height(height)
-{
- initializeSession();
-}
-
-QTDecompressionSession::~QTDecompressionSession()
-{
- if (m_session)
- ICMDecompressionSessionRelease(m_session);
-}
-
-void QTDecompressionSession::initializeSession()
-{
- if (m_session)
- return;
-
- ICMPixelFormatInfo pixelFormatInfo = {sizeof(ICMPixelFormatInfo), 0};
- if (ICMGetPixelFormatInfo(m_pixelFormat, &pixelFormatInfo) != noErr) {
- // The ICM does not know anything about the pixelFormat contained in
- // the pixel buffer, so it won't be able to convert it to RGBA.
- return;
- }
-
- // The depth and cType fields of the ImageDescriptionHandle are filled
- // out according to the instructions in Technical Q&A QA1183:
- // http://developer.apple.com/library/mac/#qa/qa2001/qa1183.html
- bool isIndexed = pixelFormatInfo.formatFlags & kICMPixelFormatIsIndexed;
- bool isQD = pixelFormatInfo.formatFlags & kICMPixelFormatIsSupportedByQD;
- bool isMonochrome = pixelFormatInfo.formatFlags & kICMPixelFormatIsMonochrome;
- bool hasAlpha = pixelFormatInfo.formatFlags & kICMPixelFormatHasAlphaChannel;
-
- unsigned int depth = 24; // The default depth is 24.
- if (hasAlpha)
- depth = 32; // Any pixel format with alpha gets a depth of 32.
- else if (isMonochrome) {
- // Grayscale pixel formats get depths 33 through 40, depending
- // on their bits per pixel. Yes, this means that 16-bit grayscale
- // and 8-bit grayscale have the same pixel depth.
- depth = 32 + std::min<unsigned int>(8, pixelFormatInfo.bitsPerPixel[0]);
- } else if (isIndexed) {
- // Indexed pixel formats get a depth of 1 through 8, depending on
- // the their bits per pixel.
- depth = pixelFormatInfo.bitsPerPixel[0];
- }
-
- // If QuickDraw supports the given pixel format, the cType should be kRawCodecType.
- // Otherwise, use the pixel format code for the cType. We are assuming the pixel
- // buffer is uncompressed.
- unsigned long cType = isQD ? kRawCodecType : m_pixelFormat;
-
- ImageDescriptionHandle description = (ImageDescriptionHandle)NewHandleClear(sizeof(ImageDescription));
- (**description).idSize = sizeof(ImageDescription);
- (**description).cType = cType;
- (**description).version = 2;
- (**description).spatialQuality = codecLosslessQuality;
- (**description).width = m_width;
- (**description).height = m_height;
- (**description).hRes = 72 << 16; // 72 DPI as a fixed-point number
- (**description).vRes = 72 << 16; // 72 DPI as a fixed-point number
- (**description).frameCount = 1;
- (**description).depth = depth;
- (**description).clutID = -1;
-
- // Create the mandatory ICMDecompressionSessionOptions, but leave
- // all the default values.
- ICMDecompressionSessionOptionsRef options = 0;
- ICMDecompressionSessionOptionsCreate(kCFAllocatorDefault, &options);
-
- CFDictionaryRef pixelBufferAttributes = QTPixelBuffer::createPixelBufferAttributesDictionary(QTPixelBuffer::ConfigureForCGImage);
-
- ICMDecompressionTrackingCallbackRecord callback = {
- QTDecompressionSessionClient::trackingCallback,
- this,
- };
-
- ICMDecompressionSessionCreate(kCFAllocatorDefault,
- description,
- options,
- pixelBufferAttributes,
- &callback,
- &m_session);
-
- if (pixelBufferAttributes)
- CFRelease(pixelBufferAttributes);
-
- ICMDecompressionSessionOptionsRelease(options);
- DisposeHandle((Handle)description);
-}
-
-bool QTDecompressionSession::canDecompress(QTPixelBuffer inBuffer)
-{
- return m_session
- && inBuffer.pixelFormatType() == m_pixelFormat
- && inBuffer.width() == m_width
- && inBuffer.height() == m_height;
-}
-
-QTPixelBuffer QTDecompressionSession::decompress(QTPixelBuffer inBuffer)
-{
- if (!canDecompress(inBuffer))
- return QTPixelBuffer();
-
- inBuffer.lockBaseAddress();
- ICMDecompressionSessionDecodeFrame(m_session,
- static_cast<UInt8*>(inBuffer.baseAddress()),
- inBuffer.dataSize(),
- 0, // frameOptions
- 0, // frameTime
- 0); // sourceFrameRefCon
-
- // Because we passed in 0 for frameTime, the above function
- // is synchronous, and the client callback will have been
- // called before the function returns, and m_latestFrame
- // will contain the newly decompressed frame.
- return m_latestFrame;
-}
« no previous file with comments | « Source/WebCore/platform/graphics/win/QTDecompressionSession.h ('k') | Source/WebCore/platform/graphics/win/QTMovie.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698