Commit 0e1777c2 authored by Clément Stenac's avatar Clément Stenac

Propose to fix AVI index

parent 89518a71
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/input.h> #include <vlc/input.h>
#include <vlc_interaction.h>
#include "vlc_meta.h" #include "vlc_meta.h"
#include "codecs.h" #include "codecs.h"
...@@ -198,6 +200,8 @@ static int Open( vlc_object_t * p_this ) ...@@ -198,6 +200,8 @@ static int Open( vlc_object_t * p_this )
demux_t *p_demux = (demux_t *)p_this; demux_t *p_demux = (demux_t *)p_this;
demux_sys_t *p_sys; demux_sys_t *p_sys;
vlc_bool_t b_index = VLC_FALSE;
avi_chunk_t ck_riff; avi_chunk_t ck_riff;
avi_chunk_list_t *p_riff = (avi_chunk_list_t*)&ck_riff; avi_chunk_list_t *p_riff = (avi_chunk_list_t*)&ck_riff;
avi_chunk_list_t *p_hdrl, *p_movi; avi_chunk_list_t *p_hdrl, *p_movi;
...@@ -509,6 +513,7 @@ static int Open( vlc_object_t * p_this ) ...@@ -509,6 +513,7 @@ static int Open( vlc_object_t * p_this )
if( config_GetInt( p_demux, "avi-index" ) ) if( config_GetInt( p_demux, "avi-index" ) )
{ {
aviindex:
if( p_sys->b_seekable ) if( p_sys->b_seekable )
{ {
AVI_IndexCreate( p_demux ); AVI_IndexCreate( p_demux );
...@@ -530,8 +535,29 @@ static int Open( vlc_object_t * p_this ) ...@@ -530,8 +535,29 @@ static int Open( vlc_object_t * p_this )
(mtime_t)p_avih->i_microsecperframe / (mtime_t)p_avih->i_microsecperframe /
(mtime_t)1000000 ) (mtime_t)1000000 )
{ {
msg_Warn( p_demux, "broken or missing index, 'seek' will be axproximative or will have strange behavour" ); msg_Warn( p_demux, "broken or missing index, 'seek' will be axproximative or will have "
"strange behavour" );
if( !b_index )
{
int i_create;
i_create = intf_UserYesNo( p_demux, "AVI Index", _("This AVI file is broken. Seeking will not "
"work correctly.\nDo you want to "
"try to repair it (this might take a long time) ?" ) );
if( i_create == DIALOG_OK_YES )
{
b_index = VLC_TRUE;
msg_Dbg( p_demux, "Fixing AVI index" );
goto aviindex;
}
else if( i_create == DIALOG_CANCELLED )
{
/* Kill input */
p_demux->p_parent->b_die = VLC_TRUE;
goto error;
}
}
} }
/* fix some BeOS MediaKit generated file */ /* fix some BeOS MediaKit generated file */
for( i = 0 ; i < p_sys->i_track; i++ ) for( i = 0 ; i < p_sys->i_track; i++ )
{ {
......
...@@ -139,8 +139,6 @@ void intf_InteractionManage( playlist_t *p_playlist ) ...@@ -139,8 +139,6 @@ void intf_InteractionManage( playlist_t *p_playlist )
p_dialog->i_return = DIALOG_DEFAULT; p_dialog->i_return = DIALOG_DEFAULT;
if( p_dialog->i_flags & DIALOG_OK_CANCEL ) if( p_dialog->i_flags & DIALOG_OK_CANCEL )
p_dialog->i_return = DIALOG_CANCELLED; p_dialog->i_return = DIALOG_CANCELLED;
if( p_dialog->i_flags & DIALOG_YES_NO_CANCEL )
p_dialog->i_return = DIALOG_CANCELLED;
// Pretend we have hidden and destroyed it // Pretend we have hidden and destroyed it
if( p_dialog->i_status == HIDDEN_DIALOG ) if( p_dialog->i_status == HIDDEN_DIALOG )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment