Ejemplo n.º 1
0
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
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
0
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;
}