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, |