X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fsdi.cpp;h=9e9acc92496c2100850f3ac0cabc99d1e1e47fbe;hb=fe0d096ffdccd927eb910bcc0052940059ac46f2;hp=c2a2bdaf725fc3eb8608a456823397b7c72a3d00;hpb=aedd2db49bd6d4f26b5dc6113f1cb6e92e50ff50;p=vlc diff --git a/modules/access/sdi.cpp b/modules/access/sdi.cpp index c2a2bdaf72..9e9acc9249 100644 --- a/modules/access/sdi.cpp +++ b/modules/access/sdi.cpp @@ -306,13 +306,11 @@ static int Open( vlc_object_t *p_this ) if( result != S_OK ) { msg_Err( p_demux, "Could not get model name" ); - free( psz_model_name ); Close( p_this ); return VLC_EGENERIC; } msg_Dbg( p_demux, "Opened DeckLink PCI card %d (%s)", i_card_index, psz_model_name ); - free( psz_model_name ); if( p_sys->p_card->QueryInterface( IID_IDeckLinkInput, (void**)&p_sys->p_input) != S_OK ) { @@ -382,6 +380,7 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_demux, "Invalid --sdi-audio-connection specified; choose one of " \ "embedded, aesebu, or analog." ); + free( psz_tmp ); p_config->Release(); Close( p_this ); return VLC_EGENERIC; @@ -415,6 +414,7 @@ static int Open( vlc_object_t *p_this ) char *psz_display_mode = var_CreateGetString( p_demux, "sdi-mode" ); if( !psz_display_mode || strlen( psz_display_mode ) == 0 || strlen( psz_display_mode ) > 4 ) { msg_Err( p_demux, "Missing or invalid --sdi-mode string" ); + free( psz_display_mode ); p_display_iterator->Release(); Close( p_this ); return VLC_EGENERIC; @@ -428,6 +428,8 @@ static int Open( vlc_object_t *p_this ) strcpy(sz_display_mode_padded, " "); for( int i = 0; i < strlen( psz_display_mode ); ++i ) sz_display_mode_padded[i] = psz_display_mode[i]; + + free( psz_display_mode ); BMDDisplayMode wanted_mode_id; memcpy( &wanted_mode_id, &sz_display_mode_padded, sizeof(wanted_mode_id) ); @@ -439,9 +441,7 @@ static int Open( vlc_object_t *p_this ) IDeckLinkDisplayMode *p_display_mode; result = p_display_iterator->Next( &p_display_mode ); if( result != S_OK || !p_display_mode ) - { break; - } char sz_mode_id_text[5] = {0}; BMDDisplayMode mode_id = ntohl( p_display_mode->GetDisplayMode() ); @@ -452,7 +452,7 @@ static int Open( vlc_object_t *p_this ) if( result != S_OK ) { msg_Err( p_demux, "Failed to get display mode name" ); - free( psz_mode_name ); + p_display_mode->Release(); p_display_iterator->Release(); Close( p_this ); return VLC_EGENERIC; @@ -463,7 +463,7 @@ static int Open( vlc_object_t *p_this ) if( result != S_OK ) { msg_Err( p_demux, "Failed to get frame rate" ); - free( psz_mode_name ); + p_display_mode->Release(); p_display_iterator->Release(); Close( p_this ); return VLC_EGENERIC; @@ -497,7 +497,6 @@ static int Open( vlc_object_t *p_this ) sz_mode_id_text, psz_mode_name, p_display_mode->GetWidth(), p_display_mode->GetHeight(), double(time_scale) / frame_duration, psz_field_dominance ); - free( psz_mode_name ); if( wanted_mode_id == mode_id ) { @@ -508,6 +507,8 @@ static int Open( vlc_object_t *p_this ) p_sys->i_fps_den = frame_duration; p_sys->i_dominance_flags = i_dominance_flags; } + + p_display_mode->Release(); } p_display_iterator->Release();