line21.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:2k
源码类别:

DVD

开发平台:

C/C++

  1. #include "config.h"
  2. #include "global.h"
  3. #include "regmap.h"
  4. #include "iop.h"
  5. #include "viddec.h"
  6. #include "tvif.h"
  7. #include "line21.h"
  8. #define tv_l21_ready() (WaitIopFunRdy(0)>=0)
  9. void reset_line21(void)
  10. {
  11.   line21_data_wp = line21_data_rp = 0;
  12. }
  13. static inline void polling_l21(void)
  14. {
  15.   if (line21_now && tv_l21_ready())
  16.   {
  17.     if (line21_data_rp==line21_data_wp)
  18.     {
  19.       line21_now = 0;
  20.     }
  21.     else
  22.     {
  23.       unsigned d;
  24.       UINT8 *l21_data = line21_data+3*line21_data_rp;
  25.       UINT8 l21_flag = l21_data[0];
  26.       switch (line21_now)
  27.       {
  28.         case LINE21_UPDATE_TOP:
  29.   if ((l21_flag&0x80) == 0) line21_now=0;
  30.   else if ((l21_flag&0x7f) != 0x7f)
  31.   {
  32.     line21_now=0;
  33.     if (++line21_data_rp>=LINE21_SIZE) line21_data_rp=0;
  34.   }
  35.   else
  36.   {
  37.     d = l21_data[1];
  38.          tv_writel21_data(0,d);
  39.     line21_now = LINE21_UPDATE_TOP2;
  40.   }
  41.   break;
  42.         case LINE21_UPDATE_TOP2:
  43.   line21_now = 0;
  44.   d = l21_data[2];
  45.   tv_writel21_data(1,d);
  46.   if (++line21_data_rp>=LINE21_SIZE) line21_data_rp=0;
  47.   break;
  48.  
  49.         case LINE21_UPDATE_BOTTOM:
  50.   if ((l21_flag&0x80) != 0) line21_now=0; // it's top
  51.   else if ((l21_flag&0x7f) != 0x7f)
  52.   {
  53.     line21_now=0;
  54.     if (++line21_data_rp>=LINE21_SIZE) line21_data_rp=0;
  55.   }
  56.   else
  57.   {
  58.     line21_now = LINE21_UPDATE_BOTTOM2;
  59.     d = l21_data[1];
  60.     tv_writel21_data(2,d);
  61.   }
  62.   break;
  63.         case LINE21_UPDATE_BOTTOM2:
  64.   line21_now = 0;
  65.   d = l21_data[2];
  66.   tv_writel21_data(3,d);
  67.   if (++line21_data_rp>=LINE21_SIZE) line21_data_rp=0;
  68.   break;
  69.         default: line21_now = LINE21_UPDATE_NONE;
  70.       }
  71.     }
  72.   }
  73. }