| Index: include/core/SkPixelRef.h | 
| diff --git a/include/core/SkPixelRef.h b/include/core/SkPixelRef.h | 
| index a24ef8e23158a9444a0a3a9bce5b30482d39e49a..afab7fad9e04e746fa289b6d42e58b73fb277900 100644 | 
| --- a/include/core/SkPixelRef.h | 
| +++ b/include/core/SkPixelRef.h | 
| @@ -13,6 +13,7 @@ | 
| #include "SkRefCnt.h" | 
| #include "SkString.h" | 
| #include "SkImageInfo.h" | 
| +#include "SkSize.h" | 
| #include "SkTDArray.h" | 
|  | 
| //#define xed | 
| @@ -219,6 +220,18 @@ public: | 
| */ | 
| virtual GrTexture* getTexture() { return NULL; } | 
|  | 
| +    /** | 
| +     *  If any planes or rowBytes is NULL, this should output the sizes and return true | 
| +     *  if it can efficiently return YUV planar data. If it cannot, it should return false. | 
| +     * | 
| +     *  If all planes and rowBytes are not NULL, then it should copy the associated Y,U,V data | 
| +     *  into those planes of memory supplied by the caller. It should validate that the sizes | 
| +     *  match what it expected. If the sizes do not match, it should return false. | 
| +     */ | 
| +    bool getYUV8Planes(SkISize sizes[3], void* planes[3], size_t rowBytes[3]) { | 
| +        return this->onGetYUV8Planes(sizes, planes, rowBytes); | 
| +    } | 
| + | 
| bool readPixels(SkBitmap* dst, const SkIRect* subset = NULL); | 
|  | 
| /** | 
| @@ -305,6 +318,9 @@ protected: | 
| // default impl returns NULL. | 
| virtual SkData* onRefEncodedData(); | 
|  | 
| +    // default impl returns false. | 
| +    virtual bool onGetYUV8Planes(SkISize sizes[3], void* planes[3], size_t rowBytes[3]); | 
| + | 
| /** | 
| *  Returns the size (in bytes) of the internally allocated memory. | 
| *  This should be implemented in all serializable SkPixelRef derived classes. | 
|  |