root/platform/a410/sub/100f/lib.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. hook_raw_fptr
  2. hook_raw_ret_addr
  3. hook_raw_image_addr
  4. hook_yuv_shooting_buf_addr
  5. hook_yuv_shooting_buf_width
  6. hook_yuv_shooting_buf_height
  7. vid_get_viewport_width_proper
  8. vid_get_viewport_height_proper
  9. vid_get_viewport_live_fb
  10. vid_get_bitmap_fb
  11. vid_get_viewport_fb
  12. vid_get_viewport_fb_d
  13. vid_get_viewport_width
  14. vid_get_viewport_height
  15. camera_jpeg_count_str
  16. vid_get_palette_type
  17. vid_get_palette_size
  18. vid_get_bitmap_active_palette
  19. vid_get_bitmap_active_buffer
  20. vid_get_viewport_fullscreen_height
  21. vid_get_viewport_fullscreen_width
  22. vid_get_viewport_display_xoffset
  23. vid_get_viewport_display_yoffset

   1 #include "platform.h"
   2 #include "keyboard.h"
   3 
   4 void *hook_raw_fptr()
   5 {
   6     return (void*)0x37334; // found in taskcreate_ImageSensorTask
   7 }
   8 
   9 void *hook_raw_ret_addr()
  10 {
  11     return (void*)0xFFCAE220; //
  12 }
  13 
  14 char *hook_raw_image_addr()
  15 {
  16     return (char*)0x10570FF0;  // @ffca81cc, 0x10400000+0x17000+0xff0
  17 }
  18 
  19 /*
  20 YUV buffer created in jpeg processing for < full size jpeg
  21 not currently used, kept for future reference
  22 */
  23 #if 0
  24 char *hook_yuv_shooting_buf_addr() { //buffer that holds the uncompressed yuv source of the fresh jpeg
  25     return (char*)0x10553180; //not used for L picture size
  26 }
  27 
  28 int hook_yuv_shooting_buf_width() {
  29     if (shooting_get_resolution()) //invalid for L picture size
  30         return *(int*)0x3716c; //@ffca2d08, ... inside DvlpSeqTask
  31     return 0;
  32 }
  33 
  34 int hook_yuv_shooting_buf_height() {
  35     if (shooting_get_resolution()) //invalid for L picture size
  36         return *(int*)0x37170; //@ffca2d0c, ... inside DvlpSeqTask
  37     return 0;
  38 }
  39 #endif
  40 
  41 int vid_get_viewport_width_proper() {
  42     int m = mode_get();
  43     if((m&MODE_MASK) == MODE_PLAY) {
  44         return 720; //no tv-out
  45     }
  46     // return hard coded width since mode doesn't update at the same time as GetVRAMHPixelsSize
  47     if((m&MODE_SHOOTING_MASK) == MODE_STITCH) {
  48         return 360;
  49     }
  50     return *(int*)0x36a98;
  51 }
  52 
  53 int vid_get_viewport_height_proper() {
  54     int m = mode_get();
  55     if((m&MODE_MASK) == MODE_PLAY) {
  56         return 240; //no tv-out
  57     }
  58     // return hard coded width since mode doesn't update at the same time as GetVRAMHPixelsSize
  59     if((m&MODE_SHOOTING_MASK) == MODE_STITCH) {
  60         return 120; 
  61     }
  62     return *(int*)0x36a9c;
  63 }
  64 
  65 void *vid_get_viewport_live_fb() // from a540
  66 {
  67        void **fb=(void **)0x4FF4; //@ffc90d90
  68        unsigned char buff = *((unsigned char*)0x5004); //@ffc90d64
  69        if (buff == 0) {
  70            buff = 2;
  71        }
  72        else {
  73            buff--;
  74        }
  75        return fb[buff];
  76 }
  77 
  78 void *vid_get_bitmap_fb()
  79 {
  80     return (void*)0x103C79A0; // same as in a430, a420
  81 }
  82 
  83 void *vid_get_viewport_fb()//
  84 {
  85     return (void*)0x105EAF80; // @ffd08f18
  86 }
  87 
  88 void *vid_get_viewport_fb_d()
  89 {
  90     return (void*)(*(int*)0x73280); // @ffd0c96c
  91 }
  92 
  93 int vid_get_viewport_width() {
  94     return vid_get_viewport_width_proper()>>1;
  95 }
  96 
  97 long vid_get_viewport_height()
  98 {
  99     return vid_get_viewport_height_proper();
 100 }
 101 
 102 char *camera_jpeg_count_str()
 103 {
 104     return (char*)0x7F9F0; // @ffdd479c
 105 } 
 106 
 107 int vid_get_palette_type() { return 1; }
 108 int vid_get_palette_size() { return 16*4; }
 109 
 110 void *vid_get_bitmap_active_palette() {
 111     return (void *)0x73028; // GetPaletteFromPhysicalScreen
 112 }
 113 
 114 void *vid_get_bitmap_active_buffer()
 115 {
 116     return (void*)(*(int*)0x6694); // @ffd0a170 DisplayPhysicalScreenWithYUVPalette
 117 }
 118 
 119 int vid_get_viewport_fullscreen_height() {
 120     // except for stitch, always full screen
 121     int m = mode_get();
 122     if((m&MODE_MASK) != MODE_PLAY && ((m&MODE_SHOOTING_MASK) == MODE_STITCH)) {
 123         return 240;
 124     }
 125     return vid_get_viewport_height_proper();
 126 }
 127 
 128 int vid_get_viewport_fullscreen_width() {
 129     // except for stitch, always full screen
 130     int m = mode_get();
 131     if((m&MODE_MASK) != MODE_PLAY && ((m&MODE_SHOOTING_MASK) == MODE_STITCH)) {
 132         return 720;
 133     }
 134     return vid_get_viewport_width_proper();
 135 }
 136 
 137 int vid_get_viewport_display_xoffset() {
 138     int m = mode_get();
 139     if((m&MODE_MASK) == MODE_PLAY) {
 140         return 0;
 141     } else if((m&MODE_SHOOTING_MASK) == MODE_STITCH) { // checked visually, OK
 142         short dir=0;
 143         short seq=0;
 144         get_property_case(PROPCASE_STITCH_DIRECTION,&dir,sizeof(dir));
 145         get_property_case(PROPCASE_STITCH_SEQUENCE,&seq,sizeof(seq));
 146         // overall stitch window is 3/4 screen width, centered
 147         // live part is 1/2, so margin is either 1/8th or 3/8th
 148         if(dir==0) {
 149             return seq?132:44;
 150         } else {
 151             return seq?44:132;
 152         }
 153     }
 154     return 0;
 155 }
 156 
 157 int vid_get_viewport_display_yoffset() {
 158     int m = mode_get();
 159     if((m&MODE_MASK) == MODE_PLAY) {
 160         return 0;
 161     }
 162     return ((m&MODE_SHOOTING_MASK) == MODE_STITCH)?60:0; // window is 120, centered in 240 screen
 163 }

/* [<][>][^][v][top][bottom][index][help] */