Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. //  Copyright (c) 2011 FFmpegSource Project
  2. //
  3. //  Permission is hereby granted, free of charge, to any person obtaining a copy
  4. //  of this software and associated documentation files (the "Software"), to deal
  5. //  in the Software without restriction, including without limitation the rights
  6. //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  7. //  copies of the Software, and to permit persons to whom the Software is
  8. //  furnished to do so, subject to the following conditions:
  9. //
  10. //  The above copyright notice and this permission notice shall be included in
  11. //  all copies or substantial portions of the Software.
  12. //
  13. //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  16. //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  17. //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  18. //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  19. //  THE SOFTWARE.
  20.  
  21. /* these are defines/functions that are used and were changed in the switch to 2.6
  22.  * and are needed to maintain full compatility with 2.5 */
  23.  
  24. enum {
  25.   AVS_CS_YV12_25 = 1<<3 | AVS_CS_YUV | AVS_CS_PLANAR,  // y-v-u, planar
  26.   AVS_CS_I420_25 = 1<<4 | AVS_CS_YUV | AVS_CS_PLANAR,  // y-u-v, planar
  27. };
  28.  
  29. AVSC_INLINE int avs_get_height_p_25(const AVS_VideoFrame * p, int plane) {
  30.     switch (plane)
  31.     {
  32.         case AVS_PLANAR_U: case AVS_PLANAR_V:
  33.             if (p->pitchUV)
  34.                 return p->height>>1;
  35.             return 0;
  36.     }
  37.     return p->height;}
  38.  
  39. AVSC_INLINE int avs_get_row_size_p_25(const AVS_VideoFrame * p, int plane) {
  40.     int r;
  41.     switch (plane)
  42.     {
  43.     case AVS_PLANAR_U: case AVS_PLANAR_V:
  44.         if (p->pitchUV)
  45.             return p->row_size>>1;
  46.         else
  47.             return 0;
  48.     case AVS_PLANAR_U_ALIGNED: case AVS_PLANAR_V_ALIGNED:
  49.         if (p->pitchUV)
  50.         {
  51.             r = ((p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)) )>>1; // Aligned rowsize
  52.             if (r < p->pitchUV)
  53.                 return r;
  54.             return p->row_size>>1;
  55.         }
  56.         else
  57.             return 0;
  58.     case AVS_PLANAR_Y_ALIGNED:
  59.         r = (p->row_size+AVS_FRAME_ALIGN-1)&(~(AVS_FRAME_ALIGN-1)); // Aligned rowsize
  60.         if (r <= p->pitch)
  61.             return r;
  62.         return p->row_size;
  63.     }
  64.     return p->row_size;
  65. }
  66.  
  67. AVSC_INLINE int avs_is_yv12_25(const AVS_VideoInfo * p)
  68.     { return ((p->pixel_type & AVS_CS_YV12_25) == AVS_CS_YV12_25)||((p->pixel_type & AVS_CS_I420_25) == AVS_CS_I420_25); }
  69.