playlist seems broken only first two files played: what happened to fport->fd_list[2]???

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alright I found the problem but not the solution.
The problem has to do with wav_playlist.c versus wav_player.c and the 
port definitions being different.
Lets take a look at what my application does.  It does this:
         status = pjsua_playlist_create(play_list_filenames, 
filecount, &port_label, PJMEDIA_FILE_NO_LOOP,
                                      &sip_data[line].wav_id); // 
this works.  And craetes a media port using the wav_playlist.c definition.

          pjsua_player_get_port(sip_data[line].wav_id, 
&sip_data[line].wav_playback_port); // this gives the port based on 
id being a array index

         sip_data[line].wav_port = 
pjsua_player_get_conf_port(sip_data[line].wav_id); // no affect on 
this issue.

         status=pjmedia_wav_player_set_eof_cb(sip_data[line].wav_playback_port, 
&sip_data[line].line_number, on_wave_playback_eof); // ok in this 
function we break.
This function is in wav_player.c.  So the smaller port definition is 
used and when fport->cb is set...bam we have no handle value for the 
fport->fd_list[2] when
we get back into wav_playlist.c

Possible solutions
put a set_eof_cb() function of some type in wav_playlist.c
move (*cb) (port *, void *); to the first field of both structures.

But what ideas does Benny and team have, as I would want any solution 
merged into pjsip releases going forward.  But I can test any 
solution proposed.
Thanks,
David Clark



At 02:29 PM 1/16/2009, you wrote:
>playlist bug after the second file.  The file handle is lost.
>I augmented wav_playlist.c to print out some debug
>statements of what the file handles and read function results
>where.  This is what I got:
>
>wav_playlist.c 
>pj_file_open(filename=C:\centurytel\SYSlib\CATlib\slot_1.wav,handle=17964) 
>index = 3
>wav_playlist.c 
>pj_file_open(filename=C:\centurytel\SYSlib\CATlib\slot_2.wav,handle=17972) 
>index = 2
>wav_playlist.c 
>pj_file_open(filename=C:\centurytel\SYSlib\CATlib\slot_3.wav,handle=17976) 
>index = 1
>wav_playlist.c 
>pj_file_open(filename=C:\centurytel\SYSlib\CATlib\slot_4.wav,handle=17980) 
>index = 0
>
>filenames and handles look acceptable for the given index values.
>
>       resample.c resample created: high qualiy, large filter, 
> in/out rate=16000/8000
>       resample.c resample created: high qualiy, large filter, 
> in/out rate=8000/16000
>  playfilelist(4321): pjsua_playlist_create()
>  ckln_newop(1, play wave, Ready), sip_data[line].line_state=play 
> wave, sip_data[line].current_pjsip_operation=play wave
>     conference.c Port 2 (4321) transmitting to port 1 
> (sip:+19722496924 at 4.68.250.148;isup-oli=62)
>  playfilelist(4321): pjsua_conf(connect(2, 1)
>wav_playlist.c pj_file_read(handle=17980, input_size=4000) returned 
>size=4000, index = 0
>wav_playlist.c pj_file_read(handle=17980, input_size=4000) returned 
>size=4000, index = 0
>wav_playlist.c pj_file_read(handle=17980, input_size=4000) returned 
>size=4000, index = 0
>wav_playlist.c pj_file_read(handle=17980, input_size=4000) returned 
>size=926, index = 0
>wav_playlist.c pj_file_read(handle=17976, input_size=3074) returned 
>size=3074, index = 1
>wav_playlist.c pj_file_read(handle=17976, input_size=4000) returned 
>size=4000, index = 1
>wav_playlist.c pj_file_read(handle=17976, input_size=4000) returned 
>size=4000, index = 1
>wav_playlist.c pj_file_read(handle=17976, input_size=4000) returned 
>size=2908, index = 1
>wav_playlist.c pj_file_read(handle=5277605, input_size=1092) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>wav_playlist.c pj_file_read(handle=5277605, input_size=4000) 
>returned size=-1, index = 2
>
>This actually continues until I hangup at which point the player is destroyed.
>
>The question is what happened to fport->fd_list[2]???
>
>
>At 03:24 AM 1/16/2009, you wrote:
>>If I play files for the digits 4321 I only hear digits 4 and 3.
>>I am using version 1.0-rc1.
>>
>>Anybody seen anything like this?
>>I know from personal experience with prior versions like 0.5.8 this 
>>functionality used to work fine.
>>
>>Thanks,
>>David Clark
>>
>>
>>_______________________________________________
>>Visit our blog: http://blog.pjsip.org
>>
>>pjsip mailing list
>>pjsip at lists.pjsip.org
>>http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
>_______________________________________________
>Visit our blog: http://blog.pjsip.org
>
>pjsip mailing list
>pjsip at lists.pjsip.org
>http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org




[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux