diff options
Diffstat (limited to 'apps/plugins/mpegplayer/stream_mgr.c')
-rw-r--r-- | apps/plugins/mpegplayer/stream_mgr.c | 111 |
1 files changed, 32 insertions, 79 deletions
diff --git a/apps/plugins/mpegplayer/stream_mgr.c b/apps/plugins/mpegplayer/stream_mgr.c index dbc8ce9427..096ac4b0f9 100644 --- a/apps/plugins/mpegplayer/stream_mgr.c +++ b/apps/plugins/mpegplayer/stream_mgr.c | |||
@@ -710,75 +710,13 @@ void stream_vo_set_clip(const struct vo_rect *rc) | |||
710 | stream_mgr.parms.rc = *rc; | 710 | stream_mgr.parms.rc = *rc; |
711 | rc = &stream_mgr.parms.rc; | 711 | rc = &stream_mgr.parms.rc; |
712 | } | 712 | } |
713 | #ifndef HAVE_LCD_COLOR | ||
714 | else | ||
715 | { | ||
716 | vo_rect_set_ext(&stream_mgr.parms.rc, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); | ||
717 | rc = &stream_mgr.parms.rc; | ||
718 | } | ||
719 | #endif | ||
720 | 713 | ||
721 | parser_send_video_msg(VIDEO_SET_CLIP_RECT, (intptr_t)rc); | 714 | parser_send_video_msg(VIDEO_SET_CLIP_RECT, (intptr_t)rc); |
722 | 715 | ||
723 | #ifndef HAVE_LCD_COLOR | ||
724 | stream_set_gray_rect(rc); | ||
725 | #endif | ||
726 | |||
727 | stream_mgr_unlock(); | 716 | stream_mgr_unlock(); |
728 | } | 717 | } |
729 | 718 | ||
730 | #ifndef HAVE_LCD_COLOR | 719 | #ifndef HAVE_LCD_COLOR |
731 | /* Set the rectangle for the gray video overlay - clipped to screen */ | ||
732 | bool stream_set_gray_rect(const struct vo_rect *rc) | ||
733 | { | ||
734 | bool retval = false; | ||
735 | struct vo_rect rc_gray; | ||
736 | |||
737 | stream_mgr_lock(); | ||
738 | |||
739 | vo_rect_set_ext(&rc_gray, 0, 0, LCD_WIDTH, LCD_HEIGHT); | ||
740 | |||
741 | if (vo_rect_intersect(&rc_gray, &rc_gray, rc)) | ||
742 | { | ||
743 | bool vis = parser_send_video_msg(VIDEO_DISPLAY_SHOW, false); | ||
744 | |||
745 | /* The impudence! Keeps the image from disappearing anyway. */ | ||
746 | #ifdef SIMULATOR | ||
747 | rb->sim_lcd_ex_init(0, NULL); | ||
748 | #else | ||
749 | rb->timer_unregister(); | ||
750 | #endif | ||
751 | GRAY_VIDEO_INVALIDATE_ICACHE(); | ||
752 | GRAY_INVALIDATE_ICACHE(); | ||
753 | |||
754 | vo_lock(); | ||
755 | |||
756 | grey_init(rb, stream_mgr.graymem, stream_mgr.graysize, false, | ||
757 | rc_gray.r - rc_gray.l, rc_gray.b - rc_gray.t, NULL); | ||
758 | |||
759 | grey_set_position(rc_gray.l, rc_gray.t); | ||
760 | |||
761 | vo_unlock(); | ||
762 | |||
763 | GRAY_INVALIDATE_ICACHE(); | ||
764 | |||
765 | if (stream_mgr.status != STREAM_PLAYING) | ||
766 | parser_send_video_msg(VIDEO_PRINT_FRAME, true); | ||
767 | |||
768 | GRAY_VIDEO_FLUSH_ICACHE(); | ||
769 | |||
770 | if (vis) | ||
771 | { | ||
772 | grey_show(true); | ||
773 | parser_send_video_msg(VIDEO_DISPLAY_SHOW, true); | ||
774 | } | ||
775 | } | ||
776 | |||
777 | stream_mgr_unlock(); | ||
778 | |||
779 | return retval; | ||
780 | } | ||
781 | |||
782 | /* Show/hide the gray video overlay (independently of vo visibility). */ | 720 | /* Show/hide the gray video overlay (independently of vo visibility). */ |
783 | void stream_gray_show(bool show) | 721 | void stream_gray_show(bool show) |
784 | { | 722 | { |
@@ -793,6 +731,29 @@ void stream_gray_show(bool show) | |||
793 | 731 | ||
794 | stream_mgr_unlock(); | 732 | stream_mgr_unlock(); |
795 | } | 733 | } |
734 | |||
735 | #ifdef GRAY_CACHE_MAINT | ||
736 | void stream_gray_pause(bool pause) | ||
737 | { | ||
738 | static bool gray_paused = false; | ||
739 | |||
740 | if (pause && !gray_paused) | ||
741 | { | ||
742 | if (_grey_info.flags & _GREY_RUNNING) | ||
743 | { | ||
744 | rb->timer_unregister(); | ||
745 | _grey_info.flags &= ~_GREY_RUNNING; | ||
746 | gray_paused = true; | ||
747 | } | ||
748 | } | ||
749 | else if (!pause && gray_paused) | ||
750 | { | ||
751 | gray_paused = false; | ||
752 | grey_show(true); | ||
753 | } | ||
754 | } | ||
755 | #endif | ||
756 | |||
796 | #endif | 757 | #endif |
797 | 758 | ||
798 | /* Display a thumbnail at the last seek point */ | 759 | /* Display a thumbnail at the last seek point */ |
@@ -805,14 +766,10 @@ bool stream_display_thumb(const struct vo_rect *rc) | |||
805 | 766 | ||
806 | stream_mgr_lock(); | 767 | stream_mgr_lock(); |
807 | 768 | ||
808 | GRAY_INVALIDATE_ICACHE(); | ||
809 | |||
810 | stream_mgr.parms.rc = *rc; | 769 | stream_mgr.parms.rc = *rc; |
811 | retval = parser_send_video_msg(VIDEO_PRINT_THUMBNAIL, | 770 | retval = parser_send_video_msg(VIDEO_PRINT_THUMBNAIL, |
812 | (intptr_t)&stream_mgr.parms.rc); | 771 | (intptr_t)&stream_mgr.parms.rc); |
813 | 772 | ||
814 | GRAY_VIDEO_FLUSH_ICACHE(); | ||
815 | |||
816 | stream_mgr_unlock(); | 773 | stream_mgr_unlock(); |
817 | 774 | ||
818 | return retval; | 775 | return retval; |
@@ -823,12 +780,8 @@ bool stream_draw_frame(bool no_prepare) | |||
823 | bool retval; | 780 | bool retval; |
824 | stream_mgr_lock(); | 781 | stream_mgr_lock(); |
825 | 782 | ||
826 | GRAY_INVALIDATE_ICACHE(); | ||
827 | |||
828 | retval = parser_send_video_msg(VIDEO_PRINT_FRAME, no_prepare); | 783 | retval = parser_send_video_msg(VIDEO_PRINT_FRAME, no_prepare); |
829 | 784 | ||
830 | GRAY_VIDEO_FLUSH_ICACHE(); | ||
831 | |||
832 | stream_mgr_unlock(); | 785 | stream_mgr_unlock(); |
833 | 786 | ||
834 | return retval; | 787 | return retval; |
@@ -1055,26 +1008,27 @@ int stream_init(void) | |||
1055 | /* Initialize non-allocator blocks first */ | 1008 | /* Initialize non-allocator blocks first */ |
1056 | #ifndef HAVE_LCD_COLOR | 1009 | #ifndef HAVE_LCD_COLOR |
1057 | bool success; | 1010 | bool success; |
1011 | long graysize; | ||
1058 | 1012 | ||
1059 | /* This can run on another processor - align data */ | 1013 | /* This can run on another processor - align data */ |
1060 | memsize = CACHEALIGN_BUFFER(&mem, memsize); | 1014 | memsize = CACHEALIGN_BUFFER(&mem, memsize); |
1061 | stream_mgr.graymem = mem; | ||
1062 | 1015 | ||
1063 | success = grey_init(rb, mem, memsize, false, LCD_WIDTH, | 1016 | success = grey_init(rb, mem, memsize, true, LCD_WIDTH, |
1064 | LCD_HEIGHT, &stream_mgr.graysize); | 1017 | LCD_HEIGHT, &graysize); |
1065 | 1018 | ||
1066 | /* This can run on another processor - align size */ | 1019 | /* This can run on another processor - align size */ |
1067 | stream_mgr.graysize = CACHEALIGN_UP(stream_mgr.graysize); | 1020 | graysize = CACHEALIGN_UP(graysize); |
1068 | 1021 | ||
1069 | mem += stream_mgr.graysize; | 1022 | mem += graysize; |
1070 | memsize -= stream_mgr.graysize; | 1023 | memsize -= graysize; |
1071 | 1024 | ||
1072 | if (!success || (ssize_t)memsize <= 0) | 1025 | if (!success || (ssize_t)memsize <= 0) |
1073 | { | 1026 | { |
1074 | rb->splash(HZ, "greylib init failed!"); | 1027 | rb->splash(HZ, "greylib init failed!"); |
1075 | stream_mgr.graymem = NULL; | ||
1076 | return STREAM_ERROR; | 1028 | return STREAM_ERROR; |
1077 | } | 1029 | } |
1030 | |||
1031 | grey_clear_display(); | ||
1078 | #endif /* !HAVE_LCD_COLOR */ | 1032 | #endif /* !HAVE_LCD_COLOR */ |
1079 | 1033 | ||
1080 | stream_mgr.thread = rb->create_thread(stream_mgr_thread, | 1034 | stream_mgr.thread = rb->create_thread(stream_mgr_thread, |
@@ -1144,7 +1098,6 @@ void stream_exit(void) | |||
1144 | } | 1098 | } |
1145 | 1099 | ||
1146 | #ifndef HAVE_LCD_COLOR | 1100 | #ifndef HAVE_LCD_COLOR |
1147 | if (stream_mgr.graymem != NULL) | 1101 | grey_release(); |
1148 | grey_release(); | ||
1149 | #endif | 1102 | #endif |
1150 | } | 1103 | } |