@@ -694,83 +694,67 @@ void vp8_decoder_create_threads(VP8D_COMP *pbi)
694
694
}
695
695
696
696
697
- void vp8mt_de_alloc_temp_buffers (VP8D_COMP * pbi , int mb_rows )
698
- {
699
- int i ;
700
-
701
- if (pbi -> b_multithreaded_rd )
702
- {
703
- vpx_free (pbi -> mt_current_mb_col );
704
- pbi -> mt_current_mb_col = NULL ;
705
-
706
- /* Free above_row buffers. */
707
- if (pbi -> mt_yabove_row )
708
- {
709
- for (i = 0 ; i < mb_rows ; i ++ )
710
- {
711
- vpx_free (pbi -> mt_yabove_row [i ]);
712
- pbi -> mt_yabove_row [i ] = NULL ;
713
- }
714
- vpx_free (pbi -> mt_yabove_row );
715
- pbi -> mt_yabove_row = NULL ;
716
- }
717
-
718
- if (pbi -> mt_uabove_row )
719
- {
720
- for (i = 0 ; i < mb_rows ; i ++ )
721
- {
722
- vpx_free (pbi -> mt_uabove_row [i ]);
723
- pbi -> mt_uabove_row [i ] = NULL ;
724
- }
725
- vpx_free (pbi -> mt_uabove_row );
726
- pbi -> mt_uabove_row = NULL ;
727
- }
728
-
729
- if (pbi -> mt_vabove_row )
730
- {
731
- for (i = 0 ; i < mb_rows ; i ++ )
732
- {
733
- vpx_free (pbi -> mt_vabove_row [i ]);
734
- pbi -> mt_vabove_row [i ] = NULL ;
735
- }
736
- vpx_free (pbi -> mt_vabove_row );
737
- pbi -> mt_vabove_row = NULL ;
738
- }
739
-
740
- /* Free left_col buffers. */
741
- if (pbi -> mt_yleft_col )
742
- {
743
- for (i = 0 ; i < mb_rows ; i ++ )
744
- {
745
- vpx_free (pbi -> mt_yleft_col [i ]);
746
- pbi -> mt_yleft_col [i ] = NULL ;
747
- }
748
- vpx_free (pbi -> mt_yleft_col );
749
- pbi -> mt_yleft_col = NULL ;
750
- }
697
+ void vp8mt_de_alloc_temp_buffers (VP8D_COMP * pbi , int mb_rows ) {
698
+ int i ;
751
699
752
- if (pbi -> mt_uleft_col )
753
- {
754
- for (i = 0 ; i < mb_rows ; i ++ )
755
- {
756
- vpx_free (pbi -> mt_uleft_col [i ]);
757
- pbi -> mt_uleft_col [i ] = NULL ;
758
- }
759
- vpx_free (pbi -> mt_uleft_col );
760
- pbi -> mt_uleft_col = NULL ;
761
- }
700
+ vpx_free (pbi -> mt_current_mb_col );
701
+ pbi -> mt_current_mb_col = NULL ;
762
702
763
- if (pbi -> mt_vleft_col )
764
- {
765
- for (i = 0 ; i < mb_rows ; i ++ )
766
- {
767
- vpx_free (pbi -> mt_vleft_col [i ]);
768
- pbi -> mt_vleft_col [i ] = NULL ;
769
- }
770
- vpx_free (pbi -> mt_vleft_col );
771
- pbi -> mt_vleft_col = NULL ;
772
- }
703
+ /* Free above_row buffers. */
704
+ if (pbi -> mt_yabove_row ) {
705
+ for (i = 0 ; i < mb_rows ; ++ i ) {
706
+ vpx_free (pbi -> mt_yabove_row [i ]);
707
+ pbi -> mt_yabove_row [i ] = NULL ;
708
+ }
709
+ vpx_free (pbi -> mt_yabove_row );
710
+ pbi -> mt_yabove_row = NULL ;
711
+ }
712
+
713
+ if (pbi -> mt_uabove_row ) {
714
+ for (i = 0 ; i < mb_rows ; ++ i ) {
715
+ vpx_free (pbi -> mt_uabove_row [i ]);
716
+ pbi -> mt_uabove_row [i ] = NULL ;
717
+ }
718
+ vpx_free (pbi -> mt_uabove_row );
719
+ pbi -> mt_uabove_row = NULL ;
720
+ }
721
+
722
+ if (pbi -> mt_vabove_row ) {
723
+ for (i = 0 ; i < mb_rows ; ++ i ) {
724
+ vpx_free (pbi -> mt_vabove_row [i ]);
725
+ pbi -> mt_vabove_row [i ] = NULL ;
726
+ }
727
+ vpx_free (pbi -> mt_vabove_row );
728
+ pbi -> mt_vabove_row = NULL ;
729
+ }
730
+
731
+ /* Free left_col buffers. */
732
+ if (pbi -> mt_yleft_col ) {
733
+ for (i = 0 ; i < mb_rows ; ++ i ) {
734
+ vpx_free (pbi -> mt_yleft_col [i ]);
735
+ pbi -> mt_yleft_col [i ] = NULL ;
736
+ }
737
+ vpx_free (pbi -> mt_yleft_col );
738
+ pbi -> mt_yleft_col = NULL ;
739
+ }
740
+
741
+ if (pbi -> mt_uleft_col ) {
742
+ for (i = 0 ; i < mb_rows ; ++ i ) {
743
+ vpx_free (pbi -> mt_uleft_col [i ]);
744
+ pbi -> mt_uleft_col [i ] = NULL ;
745
+ }
746
+ vpx_free (pbi -> mt_uleft_col );
747
+ pbi -> mt_uleft_col = NULL ;
748
+ }
749
+
750
+ if (pbi -> mt_vleft_col ) {
751
+ for (i = 0 ; i < mb_rows ; ++ i ) {
752
+ vpx_free (pbi -> mt_vleft_col [i ]);
753
+ pbi -> mt_vleft_col [i ] = NULL ;
773
754
}
755
+ vpx_free (pbi -> mt_vleft_col );
756
+ pbi -> mt_vleft_col = NULL ;
757
+ }
774
758
}
775
759
776
760
@@ -827,41 +811,38 @@ void vp8mt_alloc_temp_buffers(VP8D_COMP *pbi, int width, int prev_mb_rows)
827
811
}
828
812
829
813
830
- void vp8_decoder_remove_threads (VP8D_COMP * pbi )
831
- {
832
- /* shutdown MB Decoding thread; */
833
- if (pbi -> b_multithreaded_rd )
834
- {
835
- int i ;
814
+ void vp8_decoder_remove_threads (VP8D_COMP * pbi ) {
815
+ /* shutdown MB Decoding thread; */
816
+ if (pbi -> b_multithreaded_rd ) {
817
+ int i ;
818
+ pbi -> b_multithreaded_rd = 0 ;
836
819
837
- pbi -> b_multithreaded_rd = 0 ;
820
+ /* allow all threads to exit */
821
+ for (i = 0 ; i < pbi -> allocated_decoding_thread_count ; ++ i ) {
822
+ sem_post (& pbi -> h_event_start_decoding [i ]);
823
+ pthread_join (pbi -> h_decoding_thread [i ], NULL );
824
+ }
838
825
839
- /* allow all threads to exit */
840
- for (i = 0 ; i < pbi -> allocated_decoding_thread_count ; i ++ )
841
- {
842
- sem_post (& pbi -> h_event_start_decoding [i ]);
843
- pthread_join (pbi -> h_decoding_thread [i ], NULL );
844
- }
826
+ for (i = 0 ; i < pbi -> allocated_decoding_thread_count ; ++ i ) {
827
+ sem_destroy (& pbi -> h_event_start_decoding [i ]);
828
+ }
845
829
846
- for (i = 0 ; i < pbi -> allocated_decoding_thread_count ; i ++ )
847
- {
848
- sem_destroy (& pbi -> h_event_start_decoding [i ]);
849
- }
830
+ sem_destroy (& pbi -> h_event_end_decoding );
850
831
851
- sem_destroy (& pbi -> h_event_end_decoding );
832
+ vpx_free (pbi -> h_decoding_thread );
833
+ pbi -> h_decoding_thread = NULL ;
852
834
853
- vpx_free (pbi -> h_decoding_thread );
854
- pbi -> h_decoding_thread = NULL ;
835
+ vpx_free (pbi -> h_event_start_decoding );
836
+ pbi -> h_event_start_decoding = NULL ;
855
837
856
- vpx_free (pbi -> h_event_start_decoding );
857
- pbi -> h_event_start_decoding = NULL ;
838
+ vpx_free (pbi -> mb_row_di );
839
+ pbi -> mb_row_di = NULL ;
858
840
859
- vpx_free (pbi -> mb_row_di );
860
- pbi -> mb_row_di = NULL ;
841
+ vpx_free (pbi -> de_thread_data );
842
+ pbi -> de_thread_data = NULL ;
861
843
862
- vpx_free (pbi -> de_thread_data );
863
- pbi -> de_thread_data = NULL ;
864
- }
844
+ vp8mt_de_alloc_temp_buffers (pbi , pbi -> common .mb_rows );
845
+ }
865
846
}
866
847
867
848
void vp8mt_decode_mb_rows ( VP8D_COMP * pbi , MACROBLOCKD * xd )
0 commit comments