Show
Ignore:
Timestamp:
09/07/06 15:59:34 (6 years ago)
Author:
ath
Message:

Improve FmInputGst and fix the previous commit.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • fm_server/trunk/src/fm_input_gst/fm_input_gst.c

    r112 r113  
    188188reset_status                            (FmInputGst     *input_gst) 
    189189{ 
     190        g_print ("RESET STATUS!\n"); 
    190191        input_gst->current_pos_samples = 0; 
    191 //      input_gst->bytes_behind_us = 0; 
    192192        input_gst->seek_at_sample = -1; 
     193 
     194        if (input_gst->common) 
     195                input_gst->common->gst_seek_to_sample = -1; 
    193196} 
    194197 
     
    419422} 
    420423 
     424void 
     425fm_input_gst_state_changed              (void) 
     426{ 
     427         
     428 
     429} 
     430 
    421431 
    422432gboolean 
     
    432442        FmInputGstCommon *common = input_gst->common; 
    433443        FmChunk *chk = common->read_chunk; 
    434         //g_print ("tick!\n"); 
     444 
     445        if (!chk) 
     446                return; 
    435447 
    436448        GValue *pos_val = g_value_init_int64 (input_gst->current_pos_samples * common->nsec_for_sample); 
     
    682694        GValue *tag_name; 
    683695 
    684         gint count = gst_tag_list_get_tag_size (list, tag); 
    685         g_return_if_fail (count == 1); 
    686  
    687         G_CONST_RETURN GValue *val = gst_tag_list_get_value_index (list, tag, 0); 
     696        gint i; 
     697        for (i = 0; i < gst_tag_list_get_tag_size (list, tag); i++) { 
     698 
     699                G_CONST_RETURN GValue *val = gst_tag_list_get_value_index (list, tag, i); 
    688700         
    689         if (strcmp (tag, GST_TAG_ARTIST) == 0) { 
    690                 tag_name = g_value_init_string ("artist"); 
    691         } else if (strcmp (tag, GST_TAG_TITLE) == 0) { 
    692                 tag_name = g_value_init_string ("artist"); 
    693         } else 
    694                 return; 
    695          
    696         rgc_signal_emit (input_gst, "found_tag", tag_name, val, NULL); 
    697         g_value_destroy (tag_name); 
     701                if (strcmp (tag, GST_TAG_ARTIST) == 0) { 
     702                        tag_name = g_value_init_string ("artist"); 
     703                } else if (strcmp (tag, GST_TAG_TITLE) == 0) { 
     704                        tag_name = g_value_init_string ("title"); 
     705                } else { 
     706                        g_print ("ignoring tag \"%s\"\n", tag); 
     707                        continue; 
     708                } 
     709 
     710                rgc_signal_emit (input_gst, "found_tag", tag_name, val, NULL); 
     711                g_value_destroy (tag_name); 
     712        } 
    698713} 
    699714 
     
    704719                                         gpointer       data) 
    705720{ 
    706         FmInputGst *input_gst = FM_INPUT_GST(data); 
    707  
    708         g_print ("Got %s message\n", GST_MESSAGE_TYPE_NAME (message)); 
     721        FmInputGst *input_gst = FM_INPUT_GST (data); 
     722        FmInput *input = FM_INPUT (data); 
     723 
     724        //g_print ("Got %s message\n", GST_MESSAGE_TYPE_NAME (message)); 
    709725 
    710726        switch (GST_MESSAGE_TYPE (message)) { 
     
    718734                        g_free (debug); 
    719735 
    720                         //g_main_loop_quit (loop); 
     736                        input_gst->play_when_ready = FALSE;                      
     737                        input->state = FM_INPUT_STOP; 
     738                        fm_input_state_changed (input); 
     739 
    721740                        break; 
    722741                } 
     
    731750                        break; 
    732751                } 
     752 
     753                case GST_MESSAGE_STATE_CHANGED: { 
     754                        GstState oldstate, newstate, pending; 
     755                        gst_message_parse_state_changed (message, &oldstate, &newstate, &pending); 
     756                        g_print ("state changed: old %d, new %d, pending %d\n", oldstate, newstate, pending); 
     757                        break; 
     758                } 
     759 
    733760                default: 
     761                        g_print ("Got %s message\n", GST_MESSAGE_TYPE_NAME (message)); 
    734762                        /* unhandled message */ 
    735763                break;