Mercurial > mplayer.hg
comparison libmpdemux/demux_lavf.c @ 29803:3b42ce7b09cf
Remove an empty program if the one requested by IDENTIFY_PROGRAM does not exist
instead of incorrectly claiming that the demuxer does not support programs.
author | reimar |
---|---|
date | Sat, 07 Nov 2009 11:09:23 +0000 |
parents | 3819fcdeaaf8 |
children | b9350576d4fc |
comparison
equal
deleted
inserted
replaced
29802:c2e91cf65729 | 29803:3b42ce7b09cf |
---|---|
709 demux_program_t *prog = arg; | 709 demux_program_t *prog = arg; |
710 AVProgram *program; | 710 AVProgram *program; |
711 int p, i; | 711 int p, i; |
712 int start; | 712 int start; |
713 | 713 |
714 if(priv->avfc->nb_programs < 2) | 714 prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default |
715 return DEMUXER_CTRL_NOTIMPL; | 715 if(priv->avfc->nb_programs < 1) |
716 return DEMUXER_CTRL_DONTKNOW; | |
716 | 717 |
717 if(prog->progid == -1) | 718 if(prog->progid == -1) |
718 { | 719 { |
719 p = 0; | 720 p = 0; |
720 while(p<priv->avfc->nb_programs && priv->avfc->programs[p]->id != priv->cur_program) | 721 while(p<priv->avfc->nb_programs && priv->avfc->programs[p]->id != priv->cur_program) |
725 { | 726 { |
726 for(i=0; i<priv->avfc->nb_programs; i++) | 727 for(i=0; i<priv->avfc->nb_programs; i++) |
727 if(priv->avfc->programs[i]->id == prog->progid) | 728 if(priv->avfc->programs[i]->id == prog->progid) |
728 break; | 729 break; |
729 if(i==priv->avfc->nb_programs) | 730 if(i==priv->avfc->nb_programs) |
730 return DEMUXER_CTRL_NOTIMPL; | 731 return DEMUXER_CTRL_DONTKNOW; |
731 p = i; | 732 p = i; |
732 } | 733 } |
733 prog->vid = prog->aid = prog->sid = -2; //no audio and no video by default | |
734 start = p; | 734 start = p; |
735 redo: | 735 redo: |
736 program = priv->avfc->programs[p]; | 736 program = priv->avfc->programs[p]; |
737 for(i=0; i<program->nb_stream_indexes; i++) | 737 for(i=0; i<program->nb_stream_indexes; i++) |
738 { | 738 { |