Subversion Repositories Kolibri OS

Rev

Rev 3068 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3068 Rev 3248
Line 50... Line 50...
50
{
50
{
51
    int i;
51
    int i;
52
 
52
 
Line 53... Line 53...
53
    for(i = 0; i < 4; i++)
53
    for(i = 0; i < 4; i++)
54
    {
54
    {    
55
        frames[i].pts    = 0;
55
        frames[i].pts    = 0;
56
        frames[i].ready  = 0;
56
        frames[i].ready  = 0;
57
    };
57
    };
58
    frames_count = 0;
58
    frames_count = 0;
59
    vfx    = 0;
59
    vfx    = 0;
Line 133... Line 133...
133
    else if(pkt.dts != AV_NOPTS_VALUE)
133
    else if(pkt.dts != AV_NOPTS_VALUE)
134
        pts= pkt.dts;
134
        pts= pkt.dts;
135
    else
135
    else
136
        pts= 0;
136
        pts= 0;
137
 
137
        
138
 
138
  
139
    pts *= av_q2d(video_time_base)*1000.0;
139
    pts *= av_q2d(video_time_base)*1000.0;
140
*/
140
*/
141
    if( 1 /*pts > current_clock*/)
141
    if( 1 /*pts > current_clock*/)
142
    {
142
    {
143
        frameFinished = 0;
143
        frameFinished = 0;
144
 
144
 
Line 197... Line 197...
197
extern int64_t rewind_pos;
197
extern int64_t rewind_pos;
Line 198... Line 198...
198
 
198
 
199
static void player_stop()
199
static void player_stop()
200
{
200
{
201
    window_t  *win;
201
    window_t  *win;    
202
 
202
    
203
    win = main_render->win;
203
    win = main_render->win;
204
 
204
    
205
    rewind_pos = 0;
205
    rewind_pos = 0;
206
 
206
    
207
    win->panel.play_btn->img_default    = res_play_btn;
207
    win->panel.play_btn->img_default    = res_play_btn;
208
    win->panel.play_btn->img_hilite     = res_play_btn;
208
    win->panel.play_btn->img_hilite     = res_play_btn;
209
    win->panel.play_btn->img_pressed    = res_play_btn_pressed;
209
    win->panel.play_btn->img_pressed    = res_play_btn_pressed;
210
    win->panel.prg->current             = rewind_pos;
210
    win->panel.prg->current             = rewind_pos;
211
 
211
    
212
    send_message(&win->panel.ctrl, MSG_PAINT, 0, 0);
212
    send_message(&win->panel.ctrl, MSG_PAINT, 0, 0);
213
    player_state = STOP;
213
    player_state = STOP;
214
    decoder_state = PLAY_2_STOP;
214
    decoder_state = PLAY_2_STOP;
215
    sound_state = PLAY_2_STOP;
215
    sound_state = PLAY_2_STOP;
216
    render_draw_client(main_render);
216
    render_draw_client(main_render);
217
//    printf("stop player\n");
217
//    printf("stop player\n");
218
 
218
    
Line 219... Line 219...
219
};
219
};
220
 
220
 
221
int MainWindowProc(ctrl_t *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2)
221
int MainWindowProc(ctrl_t *ctrl, uint32_t msg, uint32_t arg1, uint32_t arg2)
Line 235... Line 235...
235
            render_draw_client(main_render);
235
            render_draw_client(main_render);
236
            break;
236
            break;
237
 
237
 
Line 238... Line 238...
238
        case MSG_LBTNDOWN:
238
        case MSG_LBTNDOWN:
239
 
239
       
240
            if(player_state == PAUSE)
240
            if(player_state == PAUSE)
241
            {
241
            {
242
                win->panel.play_btn->img_default = res_pause_btn;
242
                win->panel.play_btn->img_default = res_pause_btn;
243
                win->panel.play_btn->img_hilite  = res_pause_btn;
243
                win->panel.play_btn->img_hilite  = res_pause_btn;
244
                win->panel.play_btn->img_pressed = res_pause_btn_pressed;
244
                win->panel.play_btn->img_pressed = res_pause_btn_pressed;
Line 282... Line 282...
282
                    {
282
                    {
283
                        win->panel.play_btn->img_default  = res_pause_btn;
283
                        win->panel.play_btn->img_default  = res_pause_btn;
284
                        win->panel.play_btn->img_hilite   = res_pause_btn;
284
                        win->panel.play_btn->img_hilite   = res_pause_btn;
285
                        win->panel.play_btn->img_pressed = res_pause_btn_pressed;
285
                        win->panel.play_btn->img_pressed = res_pause_btn_pressed;
286
                        rewind_pos = 0;
286
                        rewind_pos = 0;    
287
                        send_message(&win->panel.ctrl, MSG_PAINT, 0, 0);
287
                        send_message(&win->panel.ctrl, MSG_PAINT, 0, 0);
288
                        player_state = PLAY;
288
                        player_state = PLAY;
289
                        decoder_state = PREPARE;
289
                        decoder_state = PREPARE;
290
                    }
290
                    }
291
                    break;
291
                    break;
292
 
292
                    
293
                case ID_STOP:
293
                case ID_STOP:
294
                    player_stop();
294
                    player_stop();
295
                    break;
295
                    break;
296
 
296
                    
297
                case ID_PROGRESS:
297
                case ID_PROGRESS:
298
                    if(player_state != REWIND)
298
                    if(player_state != REWIND)
299
                    {
299
                    {
300
                        progress_t *prg = (progress_t*)arg2;
300
                        progress_t *prg = (progress_t*)arg2;
301
 
301
                    
302
                        rewind_pos = (prg->max - prg->min)*prg->pos/prg->ctrl.w;
302
                        rewind_pos = (prg->max - prg->min)*prg->pos/prg->ctrl.w;
303
 
303
                              
304
//                        printf("progress action pos: %d time: %f\n", prg->pos, (double)rewind_pos);
304
//                        printf("progress action pos: %d time: %f\n", prg->pos, (double)rewind_pos);
305
                        player_state  = REWIND;
305
                        player_state  = REWIND;
306
                        decoder_state = REWIND;
306
                        decoder_state = REWIND;
307
                        sound_state   = PLAY_2_STOP;
307
                        sound_state   = PLAY_2_STOP;
308
                        if(rewind_pos < prg->current)
308
                        if(rewind_pos < prg->current)
309
                        {
309
                        {
Line 311... Line 311...
311
                            rewind_pos = -rewind_pos;
311
                            rewind_pos = -rewind_pos;
312
                        }
312
                        }
313
                        else
313
                        else
314
                            prg->current  = rewind_pos;
314
                            prg->current  = rewind_pos;
315
 
315
                        
316
                        win->panel.play_btn->img_default  = res_pause_btn;
316
                        win->panel.play_btn->img_default  = res_pause_btn;
317
                        win->panel.play_btn->img_hilite   = res_pause_btn;
317
                        win->panel.play_btn->img_hilite   = res_pause_btn;
318
                        win->panel.play_btn->img_pressed  = res_pause_btn_pressed;
318
                        win->panel.play_btn->img_pressed  = res_pause_btn_pressed;
319
                        send_message(&prg->ctrl, MSG_PAINT, 0, 0);
319
                        send_message(&prg->ctrl, MSG_PAINT, 0, 0);
320
                    };
320
                    };
321
                    break;
321
                    break;
322
 
322
                    
323
                case ID_VOL_CTRL:
323
                case ID_VOL_CTRL:      
324
                {
324
                {
325
                    slider_t *sld = (slider_t*)arg2;
325
                    slider_t *sld = (slider_t*)arg2;
326
                    int      peak;
326
                    int      peak;
327
                    int      level;
327
                    int      level;
328
 
328
                    
329
                    peak = sld->min + sld->pos * (sld->max - sld->min)/(96);
329
                    peak = sld->min + sld->pos * (sld->max - sld->min)/(96);
330
//                    level = (log2(peak+16384)*10000.0)/15 - 10000;
330
//                    level = (log2(peak+16384)*10000.0)/15 - 10000;
331
                    level =  peak;
331
                    level =  peak;
332
 
332
                     
333
//                    printf("level %d\n", level);
333
//                    printf("level %d\n", level);
334
                    set_audio_volume(level, level);
334
                    set_audio_volume(level, level);
335
                    send_message(&sld->ctrl, MSG_PAINT, 0, 0);
335
                    send_message(&sld->ctrl, MSG_PAINT, 0, 0);
336
                    win->panel.lvl->vol = level;
336
                    win->panel.lvl->vol = level;
337
                }
337
                }
338
 
338
                
339
                default:
339
                default:
340
                    break;
340
                    break;
341
            }
341
            }
342
            break;
342
            break;
343
 
343
 
Line 350... Line 350...
350
#define VERSION_A          1
350
#define VERSION_A          1
Line 351... Line 351...
351
 
351
 
352
void render_time(render_t *render)
352
void render_time(render_t *render)
353
{
353
{
354
    progress_t  *prg = main_render->win->panel.prg;
354
    progress_t  *prg = main_render->win->panel.prg; 
355
    level_t     *lvl = main_render->win->panel.lvl;
355
    level_t     *lvl = main_render->win->panel.lvl; 
356
 
356
      
357
    double      ctime;            /*    milliseconds    */
357
    double      ctime;            /*    milliseconds    */
Line 358... Line 358...
358
    double      fdelay;           /*    milliseconds    */
358
    double      fdelay;           /*    milliseconds    */
Line 366... Line 366...
366
    }
366
    }
367
    else if(player_state == REWIND)
367
    else if(player_state == REWIND)
368
    {
368
    {
369
        yield();
369
        yield();
370
        return;
370
        return;   
371
    }
371
    }
372
    else if (decoder_state == STOP && frames_count  == 0 &&
372
    else if (decoder_state == STOP && frames_count  == 0 &&
373
              player_state  != STOP)
373
              player_state  != STOP)
374
    {
374
    {          
375
        player_stop();
375
        player_stop();
376
    }
376
    }
377
    else if(player_state != PLAY)
377
    else if(player_state != PLAY)
378
    {
378
    {
379
        yield();
379
        yield();
380
        return;
380
        return;
Line 411... Line 411...
411
        main_render->draw(main_render, &frames[vfx].picture);
411
        main_render->draw(main_render, &frames[vfx].picture);
412
        prg->current = frames[vfx].pts*1000;
412
        prg->current = frames[vfx].pts*1000;
413
//        printf("current %f\n", prg->current);
413
//        printf("current %f\n", prg->current);
414
        lvl->current = vfx & 1 ? sound_level_1 : sound_level_0;
414
        lvl->current = vfx & 1 ? sound_level_1 : sound_level_0;
415
 
415
        
416
        send_message(&prg->ctrl, PRG_PROGRESS, 0, 0);
416
        send_message(&prg->ctrl, PRG_PROGRESS, 0, 0);
417
 
417
        
418
        if(main_render->win->panel.layout)
418
        if(main_render->win->panel.layout)
419
            send_message(&lvl->ctrl, MSG_PAINT, 0, 0);
419
            send_message(&lvl->ctrl, MSG_PAINT, 0, 0);
420
 
420
        
421
        frames_count--;
421
        frames_count--;
422
        frames[vfx].ready = 0;
422
        frames[vfx].ready = 0;
423
        vfx++;
423
        vfx++;
424
        vfx&= 3;
424
        vfx&= 3;
425
    }
425
    }
Line 536... Line 536...
536
    render->ctx_height = height;
536
    render->ctx_height = height;
537
    render->ctx_format = ctx_format;
537
    render->ctx_format = ctx_format;
538
 
538
 
Line 539... Line 539...
539
    mutex_lock(&driver_lock);
539
    mutex_lock(&driver_lock);
540
    render->caps = InitPixlib(flags);
540
    render->caps = init_pixlib(flags);
541
    mutex_unlock(&driver_lock);
541
    mutex_unlock(&driver_lock);
Line 542... Line 542...
542
 
542
 
543
    if(render->caps==0)
543
    if(render->caps==0)
544
    {
544
    {
Line 614... Line 614...
614
            for( i=0; i < 4; i++)
614
            for( i=0; i < 4; i++)
615
            {
615
            {
616
                render->bitmap[i].width  = render->ctx_width;
616
                render->bitmap[i].width  = render->ctx_width;
617
                render->bitmap[i].height = render->ctx_height;
617
                render->bitmap[i].height = render->ctx_height;
618
 
618
                render->bitmap[i].flags  = HW_TEX_BLIT;
-
 
619
 
Line 619... Line 620...
619
                if( create_bitmap(&render->bitmap[i]) != 0 )
620
                if( create_bitmap(&render->bitmap[i]) != 0 )
620
                {
621
                {
621
                    player_state = CLOSED;
622
                    player_state = CLOSED;
622
/*
623
/*
Line 630... Line 631...
630
        else
631
        else
631
        {
632
        {
632
            render->bitmap[0].width  = width;
633
            render->bitmap[0].width  = width;
633
            render->bitmap[0].height = height;
634
            render->bitmap[0].height = height;
634
 
635
            render->bitmap[0].flags  = HW_BIT_BLIT;
-
 
636
 
Line 635... Line 637...
635
            if( create_bitmap(&render->bitmap[0]) != 0 )
637
            if( create_bitmap(&render->bitmap[0]) != 0 )
636
                return 0;
638
                return 0;
637
        };
639
        };
638
        render->state = INIT;
640
        render->state = INIT;
Line 806... Line 808...
806
    if(render->win_state == MINIMIZED ||
808
    if(render->win_state == MINIMIZED ||
807
       render->win_state == ROLLED)
809
       render->win_state == ROLLED)
808
        return;
810
        return;
809
 
811
 
Line 810... Line 812...
810
    if(player_state == PAUSE)
812
    if(player_state == PAUSE) 
811
    {
813
    {
812
         if(frames[vfx].ready == 1 )
814
         if(frames[vfx].ready == 1 )
813
            main_render->draw(main_render, &frames[vfx].picture);
815
            main_render->draw(main_render, &frames[vfx].picture);
814
         else
816
         else
815
            draw_bar(0, CAPTION_HEIGHT, render->win_width,
817
            draw_bar(0, CAPTION_HEIGHT, render->win_width,