Mercurial > mplayer.hg
comparison stream/tvi_dshow.c @ 25085:da7c8d1b7a36
Move common chain uninit code into separate routine.
author | voroshil |
---|---|
date | Mon, 19 Nov 2007 19:45:01 +0000 |
parents | f72ebba1e6d1 |
children | e91503fbf524 |
comparison
equal
deleted
inserted
replaced
25084:f72ebba1e6d1 | 25085:da7c8d1b7a36 |
---|---|
2936 } | 2936 } |
2937 return result; | 2937 return result; |
2938 } | 2938 } |
2939 | 2939 |
2940 /** | 2940 /** |
2941 * \brief chain uninitialization | |
2942 * \param chain chain data structure | |
2943 */ | |
2944 static void destroy_chain(chain_t *chain) | |
2945 { | |
2946 int i; | |
2947 | |
2948 if(!chain) | |
2949 return; | |
2950 | |
2951 OLE_RELEASE_SAFE(chain->pStreamConfig); | |
2952 OLE_RELEASE_SAFE(chain->pCaptureFilter); | |
2953 if (chain->pmt) | |
2954 DeleteMediaType(chain->pmt); | |
2955 | |
2956 if (chain->arpmt) { | |
2957 for (i = 0; chain->arpmt[i]; i++) { | |
2958 DeleteMediaType(chain->arpmt[i]); | |
2959 } | |
2960 free(chain->arpmt); | |
2961 } | |
2962 | |
2963 if (chain->arStreamCaps) { | |
2964 for (i = 0; chain->arStreamCaps[i]; i++) { | |
2965 free(chain->arStreamCaps[i]); | |
2966 } | |
2967 free(chain->arStreamCaps); | |
2968 } | |
2969 | |
2970 if (chain->rbuf) { | |
2971 destroy_ringbuffer(chain->rbuf); | |
2972 free(chain->rbuf); | |
2973 chain->rbuf = NULL; | |
2974 } | |
2975 free(chain); | |
2976 } | |
2977 /** | |
2941 * \brief driver uninitialization | 2978 * \brief driver uninitialization |
2942 * | 2979 * |
2943 * \param priv driver's private data structure | 2980 * \param priv driver's private data structure |
2944 * | 2981 * |
2945 * \return always 1 | 2982 * \return always 1 |
2969 OLE_CALL_ARGS(priv->pGraph, RemoveFilter, priv->chains[0]->pCaptureFilter); | 3006 OLE_CALL_ARGS(priv->pGraph, RemoveFilter, priv->chains[0]->pCaptureFilter); |
2970 if (priv->chains[1]->pCaptureFilter) | 3007 if (priv->chains[1]->pCaptureFilter) |
2971 OLE_CALL_ARGS(priv->pGraph, RemoveFilter, priv->chains[1]->pCaptureFilter); | 3008 OLE_CALL_ARGS(priv->pGraph, RemoveFilter, priv->chains[1]->pCaptureFilter); |
2972 } | 3009 } |
2973 OLE_RELEASE_SAFE(priv->pCrossbar); | 3010 OLE_RELEASE_SAFE(priv->pCrossbar); |
2974 OLE_RELEASE_SAFE(priv->chains[0]->pStreamConfig); | |
2975 OLE_RELEASE_SAFE(priv->chains[1]->pStreamConfig); | |
2976 OLE_RELEASE_SAFE(priv->pVideoProcAmp); | 3011 OLE_RELEASE_SAFE(priv->pVideoProcAmp); |
2977 OLE_RELEASE_SAFE(priv->chains[0]->pCaptureFilter); | |
2978 OLE_RELEASE_SAFE(priv->chains[1]->pCaptureFilter); | |
2979 OLE_RELEASE_SAFE(priv->pGraph); | 3012 OLE_RELEASE_SAFE(priv->pGraph); |
2980 OLE_RELEASE_SAFE(priv->pBuilder); | 3013 OLE_RELEASE_SAFE(priv->pBuilder); |
2981 OLE_RELEASE_SAFE(priv->pCSGCB); | 3014 OLE_RELEASE_SAFE(priv->pCSGCB); |
2982 | 3015 |
2983 if (priv->chains[0]->pmt) | |
2984 DeleteMediaType(priv->chains[0]->pmt); | |
2985 if (priv->chains[1]->pmt) | |
2986 DeleteMediaType(priv->chains[1]->pmt); | |
2987 if (priv->chains[2]->pmt) | |
2988 DeleteMediaType(priv->chains[2]->pmt); | |
2989 | |
2990 if (priv->chains[0]->arpmt) { | |
2991 for (i = 0; priv->chains[0]->arpmt[i]; i++) { | |
2992 DeleteMediaType(priv->chains[0]->arpmt[i]); | |
2993 } | |
2994 free(priv->chains[0]->arpmt); | |
2995 } | |
2996 if (priv->chains[0]->arStreamCaps) { | |
2997 for (i = 0; priv->chains[0]->arStreamCaps[i]; i++) { | |
2998 free(priv->chains[0]->arStreamCaps[i]); | |
2999 } | |
3000 free(priv->chains[0]->arStreamCaps); | |
3001 } | |
3002 if (priv->chains[1]->arpmt) { | |
3003 for (i = 0; priv->chains[1]->arpmt[i]; i++) { | |
3004 DeleteMediaType(priv->chains[1]->arpmt[i]); | |
3005 } | |
3006 free(priv->chains[1]->arpmt); | |
3007 } | |
3008 if (priv->chains[1]->arStreamCaps) { | |
3009 for (i = 0; priv->chains[1]->arStreamCaps[i]; i++) { | |
3010 free(priv->chains[1]->arStreamCaps[i]); | |
3011 } | |
3012 free(priv->chains[1]->arStreamCaps); | |
3013 } | |
3014 if (priv->chains[1]->rbuf) { | |
3015 destroy_ringbuffer(priv->chains[1]->rbuf); | |
3016 free(priv->chains[1]->rbuf); | |
3017 priv->chains[1]->rbuf = NULL; | |
3018 } | |
3019 if (priv->chains[0]->rbuf) { | |
3020 destroy_ringbuffer(priv->chains[0]->rbuf); | |
3021 free(priv->chains[0]->rbuf); | |
3022 priv->chains[0]->rbuf = NULL; | |
3023 } | |
3024 if (priv->chains[2]->rbuf) { | |
3025 destroy_ringbuffer(priv->chains[2]->rbuf); | |
3026 free(priv->chains[2]->rbuf); | |
3027 priv->chains[2]->rbuf = NULL; | |
3028 } | |
3029 if(priv->freq_table){ | 3016 if(priv->freq_table){ |
3030 priv->freq_table_len=-1; | 3017 priv->freq_table_len=-1; |
3031 free(priv->freq_table); | 3018 free(priv->freq_table); |
3032 priv->freq_table=NULL; | 3019 priv->freq_table=NULL; |
3033 } | 3020 } |
3034 | 3021 |
3035 for(i=0; i<3;i++) | 3022 for(i=0; i<3;i++) |
3036 { | 3023 { |
3037 if(priv->chains[i]) | 3024 destroy_chain(priv->chains[i]); |
3038 free(priv->chains[i]); | |
3039 priv->chains[i] = NULL; | 3025 priv->chains[i] = NULL; |
3040 } | 3026 } |
3041 CoUninitialize(); | 3027 CoUninitialize(); |
3042 return (1); | 3028 return (1); |
3043 } | 3029 } |