您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ vlc_gc_decref函数代码示例

51自学网 2021-06-03 09:44:26
  C++
这篇教程C++ vlc_gc_decref函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中vlc_gc_decref函数的典型用法代码示例。如果您正苦于以下问题:C++ vlc_gc_decref函数的具体用法?C++ vlc_gc_decref怎么用?C++ vlc_gc_decref使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了vlc_gc_decref函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: Demux

static int Demux( demux_t *p_demux ){    xml_reader_t *p_xml_reader = NULL;    const char *node;    int i_ret = -1;    input_item_t *p_current_input = GetCurrentItem(p_demux);    input_item_node_t *p_input_node = NULL;    p_xml_reader = xml_ReaderCreate( p_demux, p_demux->s );    if( !p_xml_reader )        goto error;    /* check root node */    if( xml_ReaderNextNode( p_xml_reader, &node ) != XML_READER_STARTELEM )    {        msg_Err( p_demux, "invalid file (no root node)" );        goto error;    }    if( strcmp( node, "genrelist" ) && strcmp( node, "stationlist" ) )    {        msg_Err( p_demux, "invalid root node <%s>", node );        goto error;    }    p_input_node = input_item_node_Create( p_current_input );    if( !strcmp( node, "genrelist" ) )    {        /* we're reading a genre list */        if( DemuxGenre( p_demux, p_xml_reader, p_input_node ) )            goto error;    }    else    {        /* we're reading a station list */        if( DemuxStation( p_demux, p_xml_reader, p_input_node,                var_InheritBool( p_demux, "shoutcast-show-adult" ) ) )            goto error;    }    input_item_node_PostAndDelete( p_input_node );    p_input_node = NULL;    i_ret = 0; /* Needed for correct operation of go back */error:    if( p_xml_reader )        xml_ReaderDelete( p_xml_reader );    if( p_input_node ) input_item_node_Delete( p_input_node );    vlc_gc_decref(p_current_input);    return i_ret;}
开发者ID:qdk0901,项目名称:vlc,代码行数:53,


示例2: ParseRequest

static void ParseRequest( services_discovery_t *p_sd ){    services_discovery_sys_t *p_sys = p_sd->p_sys;    char *psz_request = p_sys->psz_request;    int i;    char *psz_tok = strchr( psz_request, ':' );    if( !psz_tok ) return;    *psz_tok = '/0';    if( !strcmp( psz_request, "ADD" ) )    {        psz_request = psz_tok + 1;        for( i = 0; i<p_sys->i_urls; i++ )            if( !strcmp(p_sys->ppsz_urls[i],psz_request) )              break;        if( i == p_sys->i_urls )        {            INSERT_ELEM( p_sys->ppsz_urls, p_sys->i_urls, p_sys->i_urls,              strdup( psz_request ) );            input_item_t *p_input;            p_input = input_item_New( p_sd, psz_request, psz_request );            input_item_AddOption( p_input, "demux=podcast", VLC_INPUT_OPTION_TRUSTED );            INSERT_ELEM( p_sys->pp_items, p_sys->i_items, p_sys->i_items, p_input );            services_discovery_AddItem( p_sd, p_input, NULL /* no cat */ );            INSERT_ELEM( p_sys->pp_input, p_sys->i_input, p_sys->i_input,                         input_CreateAndStart( p_sd, p_input, NULL ) );            SaveUrls( p_sd );        }    }    else if ( !strcmp( psz_request, "RM" ) )    {        psz_request = psz_tok + 1;        for( i = 0; i<p_sys->i_urls; i++ )          if( !strcmp(p_sys->ppsz_urls[i],psz_request) )            break;        if( i != p_sys->i_urls )        {            services_discovery_RemoveItem( p_sd, p_sys->pp_items[i] );            vlc_gc_decref( p_sys->pp_items[i] );            REMOVE_ELEM( p_sys->ppsz_urls, p_sys->i_urls, i );            REMOVE_ELEM( p_sys->pp_items, p_sys->i_items, i );        }        SaveUrls( p_sd );    }    free( p_sys->psz_request );    p_sys->psz_request = NULL;}
开发者ID:Italianmoose,项目名称:Stereoscopic-VLC,代码行数:53,


示例3: Demux

/** * /brief demuxer function for XSPF parsing */int Demux( demux_t *p_demux ){    int i_ret = -1;    xml_reader_t *p_xml_reader = NULL;    const char *name = NULL;    input_item_t *p_current_input = GetCurrentItem(p_demux);    p_demux->p_sys->pp_tracklist = NULL;    p_demux->p_sys->i_tracklist_entries = 0;    p_demux->p_sys->i_track_id = -1;    p_demux->p_sys->psz_base = NULL;    /* create new xml parser from stream */    p_xml_reader = xml_ReaderCreate( p_demux, p_demux->s );    if( !p_xml_reader )        goto end;    /* locating the root node */    if( xml_ReaderNextNode( p_xml_reader, &name ) != XML_READER_STARTELEM )    {        msg_Err( p_demux, "can't read xml stream" );        goto end;    }    /* checking root node name */    if( strcmp( name, "playlist" ) )    {        msg_Err( p_demux, "invalid root node name <%s>", name );        goto end;    }    input_item_node_t *p_subitems =        input_item_node_Create( p_current_input );    i_ret = parse_playlist_node( p_demux, p_subitems,                                 p_xml_reader, "playlist" ) ? 0 : -1;    for( int i = 0 ; i < p_demux->p_sys->i_tracklist_entries ; i++ )    {        input_item_t *p_new_input = p_demux->p_sys->pp_tracklist[i];        if( p_new_input )        {            input_item_node_AppendItem( p_subitems, p_new_input );        }    }    input_item_node_PostAndDelete( p_subitems );end:    vlc_gc_decref(p_current_input);    if( p_xml_reader )        xml_ReaderDelete( p_xml_reader );    return i_ret; /* Needed for correct operation of go back */}
开发者ID:Italianmoose,项目名称:Stereoscopic-VLC,代码行数:56,


示例4: Demux

/** Parses the whole channels.conf file */static int Demux(demux_t *demux){    input_item_t *input = GetCurrentItem(demux);    input_item_node_t *subitems = input_item_node_Create(input);    char *line;    while ((line = stream_ReadLine(demux->s)) != NULL)    {        input_item_t *item = ParseLine(line);        if (item == NULL)            continue;        input_item_node_AppendItem(subitems, item);        vlc_gc_decref(item);    }    input_item_node_PostAndDelete(subitems);    vlc_gc_decref(input);    return 0; /* Needed for correct operation of go back */}
开发者ID:DZLiao,项目名称:vlc-2.1.4.32.subproject-2013-update2,代码行数:22,


示例5: Demux

static int Demux( demux_t *p_demux ){    char *psz_url, *psz_dir;    psz_dir = strrchr( p_demux->psz_location, '/' );    if( psz_dir != NULL )        psz_dir[1] = '/0';    if( asprintf( &psz_url, "dvd://%s", p_demux->psz_location ) == -1 )        return 0;    input_item_t *p_current_input = GetCurrentItem(p_demux);    input_item_t *p_input = input_item_New( psz_url, psz_url );    input_item_PostSubItem( p_current_input, p_input );    vlc_gc_decref( p_input );    vlc_gc_decref(p_current_input);    free( psz_url );    return 0; /* Needed for correct operation of go back */}
开发者ID:CivilPol,项目名称:vlc,代码行数:21,


示例6: Demux

static int Demux( demux_t *p_demux ){    size_t len = strlen( "dvd://" ) + strlen( p_demux->psz_path )               - strlen( "VIDEO_TS.IFO" );    char *psz_url;    psz_url = malloc( len+1 );    if( !psz_url )        return 0;    snprintf( psz_url, len+1, "dvd://%s", p_demux->psz_path );    input_item_t *p_current_input = GetCurrentItem(p_demux);    input_item_t *p_input = input_item_New( p_demux, psz_url, psz_url );    input_item_PostSubItem( p_current_input, p_input );    vlc_gc_decref( p_input );    vlc_gc_decref(p_current_input);    free( psz_url );    return 0; /* Needed for correct operation of go back */}
开发者ID:cobr123,项目名称:qtVlc,代码行数:21,


示例7: DemuxDVD_VR

static int DemuxDVD_VR( demux_t *p_demux ){    char *psz_url = strdup( p_demux->psz_path );    if( !psz_url )        return 0;    size_t len = strlen( psz_url );    strncpy( psz_url + len - 12, "VR_MOVIE.VRO", 12 );    input_item_t *p_current_input = GetCurrentItem(p_demux);    input_item_t *p_input = input_item_New( p_demux, psz_url, psz_url );    input_item_PostSubItem( p_current_input, p_input );    vlc_gc_decref( p_input );    vlc_gc_decref(p_current_input);    free( psz_url );    return 0; /* Needed for correct operation of go back */}
开发者ID:cobr123,项目名称:qtVlc,代码行数:22,


示例8: Close_xspf

void Close_xspf( vlc_object_t *p_this ){    demux_t *p_demux = (demux_t *)p_this;    int i;    for(i = 0; i < p_demux->p_sys->i_tracklist_entries; i++)    {        if(p_demux->p_sys->pp_tracklist[i])            vlc_gc_decref( p_demux->p_sys->pp_tracklist[i] );    }    free( p_demux->p_sys->pp_tracklist );    free( p_demux->p_sys->psz_base );    free( p_demux->p_sys );}
开发者ID:Kafay,项目名称:vlc,代码行数:13,


示例9: vlclua_input_item_delete

/* Garbage collection of an input_item_t */static int vlclua_input_item_delete( lua_State *L ){    input_item_t **pp_item = luaL_checkudata( L, 1, "input_item" );    input_item_t *p_item = *pp_item;    if( !p_item )        return luaL_error( L, "script went completely foobar" );    *pp_item = NULL;    vlc_gc_decref( p_item );    return 1;}
开发者ID:yexihu,项目名称:vlc-2.2.0-rc2.32-2013,代码行数:14,


示例10: vlc_gc_decref

PLSelector::~PLSelector(){    if( podcastsParent )    {        int c = podcastsParent->childCount();        for( int i = 0; i < c; i++ )        {            QTreeWidgetItem *item = podcastsParent->child(i);            input_item_t *p_input = item->data( 0, IN_ITEM_ROLE ).value<input_item_t*>();            vlc_gc_decref( p_input );        }    }}
开发者ID:DZLiao,项目名称:vlc-2.1.4.32.subproject-2013-update2,代码行数:13,


示例11: onNewFileAdded

static int onNewFileAdded( vlc_object_t *p_this, char const *psz_var,                     vlc_value_t oldval, vlc_value_t newval, void *p_data ){    (void)p_this;    services_discovery_t *p_sd = p_data;    services_discovery_sys_t *p_sys = p_sd->p_sys;    (void)psz_var; (void)oldval;    char* psz_file = newval.psz_string;    if( !psz_file || !*psz_file )        return VLC_EGENERIC;    char* psz_uri = make_URI( psz_file, "file" );    input_item_t* p_item = input_item_New( psz_uri, NULL );    if( p_sys->i_type == Picture )    {        if( fileType( p_sd, psz_file ) == Picture )        {            formatSnapshotItem( p_item );            services_discovery_AddItem( p_sd, p_item, NULL );            msg_Dbg( p_sd, "New snapshot added : %s", psz_file );        }    }    else if( p_sys->i_type == Audio )    {        if( fileType( p_sd, psz_file ) == Audio )        {            services_discovery_AddItem( p_sd, p_item, NULL );            msg_Dbg( p_sd, "New recorded audio added : %s", psz_file );        }    }    else if( p_sys->i_type == Video )    {        if( fileType( p_sd, psz_file ) == Video ||            fileType( p_sd, psz_file ) == Unknown )        {            services_discovery_AddItem( p_sd, p_item, NULL );            msg_Dbg( p_sd, "New recorded video added : %s", psz_file );        }    }    vlc_gc_decref( p_item );    free( psz_uri );    return VLC_SUCCESS;}
开发者ID:vlcchina,项目名称:vlc-player-experimental,代码行数:51,


示例12: vlc_savecancel

/***************************************************************************** * Run: *****************************************************************************/static void *Run( void *data ){    services_discovery_t *p_sd = data;    services_discovery_sys_t *p_sys = p_sd->p_sys;    int canc = vlc_savecancel();    int num_dir = sizeof( p_sys->psz_dir ) / sizeof( p_sys->psz_dir[0] );    for( int i = 0; i < num_dir; i++ )    {        char* psz_dir = p_sys->psz_dir[i];        /* make sure the directory exists */        struct stat st;        if( psz_dir == NULL            ||            utf8_stat( psz_dir, &st )  ||            !S_ISDIR( st.st_mode ) )            continue;        // TODO:  make_URI is only for file://, what about dir:// ?        // char* psz_uri = make_URI( psz_dir );        char* psz_uri;        if( asprintf( &psz_uri, "dir://%s",  psz_dir ) == -1 )            continue;        input_item_t* p_root = input_item_New( p_sd, psz_uri, NULL );        if( p_sys->i_type == Picture )            input_item_AddOption( p_root, "ignore-filetypes=ini,db,lnk,txt",                                  VLC_INPUT_OPTION_TRUSTED );        input_item_AddOption( p_root, "recursive=collapse",                              VLC_INPUT_OPTION_TRUSTED );        vlc_event_manager_t *p_em = &p_root->event_manager;        vlc_event_attach( p_em, vlc_InputItemSubItemAdded,                          input_item_subitem_added, p_sd );        input_Read( p_sd, p_root );        vlc_event_detach( p_em, vlc_InputItemSubItemAdded,                          input_item_subitem_added, p_sd );        vlc_gc_decref( p_root );        free( psz_uri );    }    vlc_restorecancel(canc);    return NULL;}
开发者ID:shanewfx,项目名称:vlc-arib,代码行数:53,


示例13: DemuxDVD_VR

static int DemuxDVD_VR( demux_t *p_demux ){    size_t len = strlen( p_demux->psz_location );    char *psz_url = malloc( len + 1 );    if( unlikely( psz_url == NULL ) )        return 0;    assert( len >= 12 );    len -= 12;    memcpy( psz_url, p_demux->psz_location, len );    memcpy( psz_url + len, "VR_MOVIE.VRO", 13 );    input_item_t *p_current_input = GetCurrentItem(p_demux);    input_item_t *p_input = input_item_New( psz_url, psz_url );    input_item_PostSubItem( p_current_input, p_input );    vlc_gc_decref( p_input );    vlc_gc_decref(p_current_input);    free( psz_url );    return 0; /* Needed for correct operation of go back */}
开发者ID:CivilPol,项目名称:vlc,代码行数:23,


示例14: Demux

/** * /brief demuxer function for iTML parsing */int Demux( demux_t *p_demux ){    xml_reader_t *p_xml_reader;    const char *node;    input_item_t *p_current_input = GetCurrentItem(p_demux);    p_demux->p_sys->i_ntracks = 0;    /* create new xml parser from stream */    p_xml_reader = xml_ReaderCreate( p_demux, p_demux->s );    if( !p_xml_reader )        goto end;    /* locating the root node */    int type;    do    {        type = xml_ReaderNextNode( p_xml_reader, &node );        if( type <= 0 )        {            msg_Err( p_demux, "can't read xml stream" );            goto end;        }    }    while( type != XML_READER_STARTELEM );    /* checking root node name */    if( strcmp( node, "plist" ) )    {        msg_Err( p_demux, "invalid root node <%s>", node );        goto end;    }    input_item_node_t *p_subitems = input_item_node_Create( p_current_input );    xml_elem_hnd_t pl_elements[] =//        { {"dict",    COMPLEX_CONTENT, {.cmplx = parse_plist_dict} } };            { {"dict",    COMPLEX_CONTENT, {(bool (__cdecl *)(track_elem_t *,const char *,char *))parse_plist_dict} } };		// sunqueen modify    parse_plist_node( p_demux, p_subitems, NULL, p_xml_reader, "plist",                      pl_elements );    input_item_node_PostAndDelete( p_subitems );    vlc_gc_decref(p_current_input);end:    if( p_xml_reader )        xml_ReaderDelete( p_xml_reader );    /* Needed for correct operation of go back */    return 0;}
开发者ID:12307,项目名称:VLC-for-VS2010,代码行数:53,


示例15: vlc_gc_decref

Container::~Container(){    for ( unsigned int i = 0; i < _containers.size(); i++ )    {        delete _containers[i];    }    for ( unsigned int i = 0; i < _items.size(); i++ )    {        delete _items[i];    }    if(_inputItem )        vlc_gc_decref( _inputItem );}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:15,


示例16: CloseDevice

static void CloseDevice( services_discovery_t *p_sd ){    input_item_t **pp_items = p_sd->p_sys->pp_items;    if( pp_items != NULL )    {        for( int i_i = 0; i_i < p_sd->p_sys->i_count; i_i++ )        {            if( pp_items[i_i] != NULL )            {                services_discovery_RemoveItem( p_sd, pp_items[i_i] );                vlc_gc_decref( pp_items[i_i] );            }        }        free( pp_items );    }}
开发者ID:etix,项目名称:vlc,代码行数:17,


示例17: AddDevice

/** * Adds a udev device. */static int AddDevice (services_discovery_t *sd, struct udev_device *dev){    services_discovery_sys_t *p_sys = sd->p_sys;    char *mrl = p_sys->subsys->get_mrl (dev);    if (mrl == NULL)        return 0; /* don't know if it was an error... */    char *name = p_sys->subsys->get_name (dev);    input_item_t *item = input_item_NewWithType (VLC_OBJECT (sd), mrl,                                                 name ? name : mrl,                                                 0, NULL, 0, -1,                                                 p_sys->subsys->item_type);    msg_Dbg (sd, "adding %s (%s)", mrl, name);    free (name);    free (mrl);    if (item == NULL)        return -1;    struct device *d = malloc (sizeof (*d));    if (d == NULL)    {        vlc_gc_decref (item);        return -1;    }    d->devnum = udev_device_get_devnum (dev);    d->item = item;    d->sd = NULL;    struct device **dp = tsearch (d, &p_sys->root, cmpdev);    if (dp == NULL) /* Out-of-memory */    {        DestroyDevice (d);        return -1;    }    if (*dp != d) /* Overwrite existing device */    {        DestroyDevice (*dp);        *dp = d;    }    name = p_sys->subsys->get_cat (dev);    services_discovery_AddItem (sd, item, name ? name : "Generic");    d->sd = sd;    free (name);    return 0;}
开发者ID:cobr123,项目名称:qtVlc,代码行数:49,


示例18: RecursiveInsertCopy

static int RecursiveInsertCopy (    playlist_t *p_playlist, playlist_item_t *p_item,    playlist_item_t *p_parent, int i_pos, bool b_flat ){    PL_ASSERT_LOCKED;    assert( p_parent != NULL && p_item != NULL );    if( p_item == p_parent ) return i_pos;    input_item_t *p_input = p_item->p_input;    if( !(p_item->i_children != -1 && b_flat) )    {        input_item_t *p_new_input = input_item_Copy( p_input );        if( !p_new_input ) return i_pos;        playlist_item_t *p_new_item = NULL;        if( p_item->i_children == -1 )            p_new_item = playlist_NodeAddInput( p_playlist, p_new_input,                                   p_parent, PLAYLIST_INSERT, i_pos,                                   pl_Locked );        else            p_new_item = playlist_NodeCreate( p_playlist, NULL,                                 p_parent, i_pos, 0, p_new_input );        vlc_gc_decref( p_new_input );        if( !p_new_item ) return i_pos;        i_pos++;        if( p_new_item->i_children != -1 )            p_parent = p_new_item;    }    for( int i = 0; i < p_item->i_children; i++ )    {        if( b_flat )            i_pos = RecursiveInsertCopy( p_playlist, p_item->pp_children[i],                                         p_parent, i_pos, true );        else            RecursiveInsertCopy( p_playlist, p_item->pp_children[i],                                 p_parent, p_parent->i_children, false );    }    return i_pos;}
开发者ID:BossKing,项目名称:vlc,代码行数:45,


示例19: AddSource

/** * Adds a source. */static int AddSource (services_discovery_t *sd, const pa_source_info *info){    services_discovery_sys_t *sys = sd->p_sys;    msg_Dbg (sd, "adding %s (%s)", info->name, info->description);    char *mrl;    if (unlikely(asprintf (&mrl, "pulse://%s", info->name) == -1))        return -1;    input_item_t *item = input_item_NewWithType (mrl, info->description,                                                 0, NULL, 0, -1,                                                 ITEM_TYPE_CARD);    free (mrl);    if (unlikely(item == NULL))        return -1;    struct device *d = malloc (sizeof (*d));    if (unlikely(d == NULL))    {        vlc_gc_decref (item);        return -1;    }    d->index = info->index;    d->item = item;    d->sd = NULL;    struct device **dp = tsearch (d, &sys->root, cmpsrc);    if (dp == NULL) /* Out-of-memory */    {        DestroySource (d);        return -1;    }    if (*dp != d) /* Replace existing source */    {        DestroySource (*dp);        *dp = d;    }    const char *card = pa_proplist_gets(info->proplist, "device.product.name");    services_discovery_AddItem (sd, item,                                (card != NULL) ? card : N_("Generic"));    d->sd = sd;    return 0;}
开发者ID:4udak,项目名称:vlc,代码行数:48,


示例20: AddItemToPlaylist

/** ************************************************************************** * /brief Add a media to the playlist * * /param id the item id * @todo this code must definitely be done by the ML core *****************************************************************************/static void AddItemToPlaylist( int i_media_id, bool bPlay, media_library_t* p_ml,        bool bRenew ){    input_item_t *p_item = ml_CreateInputItem( p_ml, i_media_id );    if( !p_item )    {        msg_Dbg( p_ml, "unable to create input item for media %d",                 i_media_id );        return;    }    playlist_t *p_playlist = pl_Get( p_ml );    playlist_item_t *p_playlist_item = NULL;    playlist_Lock( p_playlist );    if( !bRenew )    {        p_playlist_item = playlist_ItemGetByInput( p_playlist, p_item );    }    if( !p_playlist_item || p_playlist_item->i_id == 1 )    {        playlist_AddInput( p_playlist, p_item,                           PLAYLIST_APPEND,                           PLAYLIST_END, true, true );        p_playlist_item = playlist_ItemGetByInput( p_playlist, p_item );    }    playlist_Unlock( p_playlist );    if( !p_playlist_item || p_playlist_item->i_id == 1 )    {        msg_Dbg( p_ml, "could not find playlist item %s (%s:%d)",                 p_item->psz_name, __FILE__, __LINE__ );        return;    }    /* Auto play item */    if( bPlay ) // || p_playlist->status.i_status == PLAYLIST_STOPPED )    {        playlist_Control( p_playlist, PLAYLIST_VIEWPLAY, false,                          NULL, p_playlist_item );    }    vlc_gc_decref( p_item );}
开发者ID:LDiracDelta,项目名称:vlc_censor_plugin,代码行数:51,


示例21: AddSubitemsOfShoutItemURL

/***************************************************************************** * AddSubitemsOfShoutItemURL: *****************************************************************************/static void AddSubitemsOfShoutItemURL( services_discovery_t *p_sd,                                       const struct shout_item_t * p_item,                                       const char * psz_category ){    struct shout_category_t category = { p_sd, psz_category };    /* Create the item */    input_item_t *p_input = CreateInputItemFromShoutItem( p_sd, p_item );    /* Read every subitems, and add them in ItemAdded */    vlc_event_attach( &p_input->event_manager, vlc_InputItemSubItemAdded,                      ItemAdded, &category );    input_Read( p_sd, p_input, true );    vlc_event_detach( &p_input->event_manager, vlc_InputItemSubItemAdded,                      ItemAdded, &category );    vlc_gc_decref( p_input );}
开发者ID:Kafay,项目名称:vlc,代码行数:21,


示例22: playlist_preparser_Delete

void playlist_preparser_Delete( playlist_preparser_t *p_preparser ){    vlc_mutex_lock( &p_preparser->lock );    /* Remove pending item to speed up preparser thread exit */    while( p_preparser->i_waiting > 0 )    {        vlc_gc_decref( p_preparser->pp_waiting[0] );        REMOVE_ELEM( p_preparser->pp_waiting, p_preparser->i_waiting, 0 );    }    while( p_preparser->b_live )        vlc_cond_wait( &p_preparser->wait, &p_preparser->lock );    vlc_mutex_unlock( &p_preparser->lock );    /* Destroy the item preparser */    vlc_cond_destroy( &p_preparser->wait );    vlc_mutex_destroy( &p_preparser->lock );    free( p_preparser );}
开发者ID:AsamQi,项目名称:vlc,代码行数:19,


示例23: playlist_AddExt

/** * Add a MRL into the playlist or the media library, duration and options given * * /param p_playlist the playlist to add into * /param psz_uri the mrl to add to the playlist * /param psz_name a text giving a name or description of this item * /param i_mode the mode used when adding * /param i_pos the position in the playlist where to add. If this is *        PLAYLIST_END the item will be added at the end of the playlist *        regardless of its size * /param i_duration length of the item in milliseconds. * /param i_options the number of options * /param ppsz_options an array of options * /param i_option_flags options flags * /param b_playlist TRUE for playlist, FALSE for media library * /param b_locked TRUE if the playlist is locked * /return VLC_SUCCESS or a VLC error code*/int playlist_AddExt( playlist_t *p_playlist, const char * psz_uri,                     const char *psz_name, int i_mode, int i_pos,                     mtime_t i_duration,                     int i_options, const char *const *ppsz_options,                     unsigned i_option_flags,                     bool b_playlist, bool b_locked ){    int i_ret;    input_item_t *p_input;    p_input = input_item_NewExt( psz_uri, psz_name, i_duration,                                 ITEM_TYPE_UNKNOWN, ITEM_NET_UNKNOWN );    if( p_input == NULL )        return VLC_ENOMEM;    input_item_AddOptions( p_input, i_options, ppsz_options, i_option_flags );    i_ret = playlist_AddInput( p_playlist, p_input, i_mode, i_pos, b_playlist,                               b_locked );    vlc_gc_decref( p_input );    return i_ret;}
开发者ID:BossKing,项目名称:vlc,代码行数:38,


示例24: entry_item_remove

static void entry_item_remove( services_discovery_t *p_sd,                               netbios_ns_entry *p_entry ){    services_discovery_sys_t *p_sys = p_sd->p_sys;    for ( int i = 0; i < vlc_array_count( p_sys->p_entry_item_list ); i++ )    {        struct entry_item *p_entry_item;        p_entry_item = vlc_array_item_at_index( p_sys->p_entry_item_list, i );        if( p_entry_item->p_entry == p_entry  )        {            services_discovery_RemoveItem( p_sd, p_entry_item->p_item );            vlc_gc_decref( p_entry_item->p_item );            vlc_array_remove(  p_sys->p_entry_item_list, i );            free( p_entry_item );            break;        }    }}
开发者ID:ToBeStrong,项目名称:vlc,代码行数:20,


示例25: input_item_New

/************************************************************************** * Create a new media descriptor object **************************************************************************/libvlc_media_t *libvlc_media_new_location( libvlc_instance_t *p_instance,                                           const char * psz_mrl ){    input_item_t * p_input_item;    libvlc_media_t * p_md;    p_input_item = input_item_New( psz_mrl, NULL );    if (!p_input_item)    {        libvlc_printerr( "Not enough memory" );        return NULL;    }    p_md = libvlc_media_new_from_input_item( p_instance, p_input_item );    /* The p_input_item is retained in libvlc_media_new_from_input_item */    vlc_gc_decref( p_input_item );    return p_md;}
开发者ID:LDiracDelta,项目名称:vlc_censor_plugin,代码行数:24,


示例26: playlist_CurrentInput

void EpgDialog::updateInfos(){    timer->stop();    input_item_t *p_input_item = NULL;    playlist_t *p_playlist = THEPL;    input_thread_t *p_input_thread = playlist_CurrentInput( p_playlist ); /* w/hold */    if( p_input_thread )    {        PL_LOCK; /* as input_GetItem still unfixed */        p_input_item = input_GetItem( p_input_thread );        if ( p_input_item ) vlc_gc_incref( p_input_item );        PL_UNLOCK;        vlc_object_release( p_input_thread );        if ( p_input_item )        {            epg->updateEPG( p_input_item );            vlc_gc_decref( p_input_item );            if ( isVisible() ) timer->start();        }    }}
开发者ID:RicoP,项目名称:vlcfork,代码行数:21,


示例27: libvlc_media_list_add_file_content

/************************************************************************** *       add_file_content (Public) **************************************************************************/voidlibvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,                                    const char * psz_uri,                                    libvlc_exception_t * p_e ){    input_item_t * p_input_item;    libvlc_media_t * p_md;    p_input_item = input_item_NewExt(                           p_mlist->p_libvlc_instance->p_libvlc_int, psz_uri,                                         _("Media Library"), 0, NULL, 0, -1 );    if( !p_input_item )    {        libvlc_exception_raise( p_e );        libvlc_printerr( "Not enough memory" );        return;    }    p_md = libvlc_media_new_from_input_item(            p_mlist->p_libvlc_instance,            p_input_item, p_e );    if( !p_md )    {        vlc_gc_decref( p_input_item );        return;    }    libvlc_media_list_add_media( p_mlist, p_md, p_e );    if( libvlc_exception_raised( p_e ) )        return;    input_Read( p_mlist->p_libvlc_instance->p_libvlc_int, p_input_item );    return;}
开发者ID:FLYKingdom,项目名称:vlc,代码行数:40,


示例28: vlc_mutex_lock

/** * This function does the preparsing and issues the art fetching requests */static void *Thread( void *data ){    playlist_preparser_t *p_preparser = data;    for( ;; )    {        input_item_t *p_current;        input_item_meta_request_option_t i_options;        /* */        vlc_mutex_lock( &p_preparser->lock );        if( p_preparser->i_waiting > 0 )        {            preparser_entry_t *p_entry = p_preparser->pp_waiting[0];            p_current = p_entry->p_item;            i_options = p_entry->i_options;            free( p_entry );            REMOVE_ELEM( p_preparser->pp_waiting, p_preparser->i_waiting, 0 );        }        else        {            p_current = NULL;            p_preparser->b_live = false;            vlc_cond_signal( &p_preparser->wait );        }        vlc_mutex_unlock( &p_preparser->lock );        if( !p_current )            break;        Preparse( p_preparser, p_current, i_options );        Art( p_preparser, p_current );        vlc_gc_decref(p_current);    }    return NULL;}
开发者ID:mingyueqingquan,项目名称:vlc,代码行数:40,


示例29: Import_DVB

/** Detect dvb-utils zap channels.conf format */int Import_DVB(vlc_object_t *obj){    demux_t *demux = (demux_t *)obj;    if (!demux_IsPathExtension(demux, ".conf" ) && !demux->b_force )        return VLC_EGENERIC;    /* Check if this really is a channels file */    const uint8_t *peek;    int len = stream_Peek(demux->s, &peek, 1023);    if (len <= 0)        return VLC_EGENERIC;    const uint8_t *eol = memchr(peek, '/n', len);    if (eol == NULL)        return VLC_EGENERIC;    len = eol - peek;//    char line[len + 1];	char *line = (char *)malloc(len + 1);			// sunqueen modify    memcpy(line, peek, len);    line[len] = '/0';    input_item_t *item = ParseLine(line);	free(line);			// sunqueen add    if (item == NULL)        return VLC_EGENERIC;    vlc_gc_decref(item);    msg_Dbg(demux, "found valid channels.conf file");    demux->pf_control = Control;    demux->pf_demux = Demux;    return VLC_SUCCESS;}
开发者ID:DZLiao,项目名称:vlc-2.1.4.32.subproject-2013-update2,代码行数:37,



注:本文中的vlc_gc_decref函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ vlc_internals函数代码示例
C++ vlc_fourcc_GetCodec函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。