static inline void * get_yuv422buffer(int offset) { #if defined(CONFIG_1100D) || defined(CONFIG_6D) return (void*)CACHEABLE(YUV422_LV_BUFFER_DISPLAY_ADDR); // Good enough #else if (YUV422_LV_BUFFER_DISPLAY_ADDR == YUV422_LV_BUFFER_1) offset += 0; else if (YUV422_LV_BUFFER_DISPLAY_ADDR == YUV422_LV_BUFFER_2) offset += 1; else offset += 2; switch (offset) { case 0: case 3: default: return (void*)CACHEABLE(YUV422_LV_BUFFER_1); case 1: case 4: return (void*)CACHEABLE(YUV422_LV_BUFFER_2); case 2: case 5: return (void*)CACHEABLE(YUV422_LV_BUFFER_3); } #endif }
struct vram_info * get_yuv422_hd_vram() { vram_params_update_if_dirty(); //~ #ifndef CONFIG_5DC if (!lv) // play/quickreview, HD buffer not active => use LV instead return get_yuv422_vram(); //~ #endif vram_hd.vram = CACHEABLE(YUV422_HD_BUFFER_DMA_ADDR); return &vram_hd; }
struct vram_info * get_yuv422_vram() { vram_params_update_if_dirty(); if (digic_zoom_overlay_enabled()) // compute histograms and such on full-screen image { vram_lv.vram = (void*)CACHEABLE(YUV422_LV_BUFFER_1); return &vram_lv; } #ifdef CONFIG_DISPLAY_FILTERS int d = display_filter_enabled(); if (d) { uint32_t* src_buf; uint32_t* dst_buf; display_filter_get_buffers(&src_buf, &dst_buf); vram_lv.vram = (void*)(d == 1 ? dst_buf : src_buf); return &vram_lv; } #endif #ifdef CONFIG_500D // workaround for issue 1108 - zebras flicker on first clip if (lv && !is_movie_mode()) first_video_clip = 0; // starting in photo mode is OK if (first_video_clip) { vram_lv.vram = CACHEABLE(get_lcd_422_buf()); return &vram_lv; } #endif extern int lv_paused; if (gui_state == GUISTATE_PLAYMENU || lv_paused || QR_MODE) vram_lv.vram = CACHEABLE(get_lcd_422_buf()); else vram_lv.vram = CACHEABLE(get_fastrefresh_422_buf()); return &vram_lv; }
static VALUE recval_get_field(VALUE self) { VALUE obj; value_struct_data *data; ValueStruct *val; char *name = rb_id2name(ruby_frame->last_func); Data_Get_Struct(self, value_struct_data, data); if (!NIL_P(obj = rb_hash_aref(data->cache, rb_str_new2(name)))) return obj; val = GetRecordItem(data->value, name); obj = get_value(val); if (CACHEABLE(val)) rb_hash_aset(data->cache, rb_str_new2(name), obj); return obj; }
static VALUE recval_aref(VALUE self, VALUE name) { VALUE obj; value_struct_data *data; ValueStruct *val; Data_Get_Struct(self, value_struct_data, data); if (!NIL_P(obj = rb_hash_aref(data->cache, name))) return obj; val = GetItemLongName(data->value, StringValuePtr(name)); if (val == NULL) rb_raise(rb_eArgError, "no such field: %s", StringValuePtr(name)); obj = get_value(val); if (CACHEABLE(val)) rb_hash_aset(data->cache, name, obj); return obj; }
static VALUE aryval_aref(VALUE self, VALUE index) { value_struct_data *data; int i = NUM2INT(index); VALUE obj; ValueStruct *val; Data_Get_Struct(self, value_struct_data, data); if (i >= 0 && i < RARRAY(data->cache)->len && !NIL_P(RARRAY(data->cache)->ptr[i])) return RARRAY(data->cache)->ptr[i]; val = GetArrayItem(data->value, i); if (val == NULL) return Qnil; obj = get_value(val); if (CACHEABLE(val)) rb_ary_store(data->cache, i, obj); return obj; }