当前位置: 首页>>代码示例>>C++>>正文


C++ bs_write函数代码示例

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


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

示例1: x264_sei_pic_timing_write

void x264_sei_pic_timing_write( x264_t *h, bs_t *s )
{
    x264_sps_t *sps = h->sps;
    bs_t q;
    uint8_t tmp_buf[100];
    bs_init( &q, tmp_buf, 100 );

    bs_realign( &q );

    if( sps->vui.b_nal_hrd_parameters_present || sps->vui.b_vcl_hrd_parameters_present )
    {
        bs_write( &q, sps->vui.hrd.i_cpb_removal_delay_length, h->fenc->i_cpb_delay - h->i_cpb_delay_pir_offset );
        bs_write( &q, sps->vui.hrd.i_dpb_output_delay_length, h->fenc->i_dpb_output_delay );
    }

    if( sps->vui.b_pic_struct_present )
    {
        bs_write( &q, 4, h->fenc->i_pic_struct-1 ); // We use index 0 for "Auto"

        // These clock timestamps are not standardised so we don't set them
        // They could be time of origin, capture or alternative ideal display
        for( int i = 0; i < num_clock_ts[h->fenc->i_pic_struct]; i++ )
            bs_write1( &q, 0 ); // clock_timestamp_flag
    }

    bs_align_10( &q );
    bs_flush( &q );

    x264_sei_write( s, tmp_buf, bs_pos( &q ) / 8, SEI_PIC_TIMING );
}
开发者ID:submux,项目名称:obe-vod,代码行数:30,代码来源:set.c

示例2: write_invalid

static void write_invalid( bs_t *s )
{
    bs_write1( s, 0 );     // cc_valid
    bs_write( s, 2, 2 );   // cc_type
    bs_write( s, 8, 0 );   // c_data_1
    bs_write( s, 8, 0 );   // c_data_2
}
开发者ID:billhibazzz,项目名称:broadcastencoder,代码行数:7,代码来源:cc.c

示例3: write_rtp_pkt

static int write_rtp_pkt( hnd_t handle, uint8_t *data, int len, int64_t timestamp )
{
    obe_rtp_ctx *p_rtp = handle;
    uint8_t pkt[RTP_HEADER_SIZE+TS_PACKETS_SIZE];
    bs_t s;
    bs_init( &s, pkt, RTP_HEADER_SIZE+TS_PACKETS_SIZE );

    bs_write( &s, 2, RTP_VERSION ); // version
    bs_write1( &s, 0 );             // padding
    bs_write1( &s, 0 );             // extension
    bs_write( &s, 4, 0 );           // CSRC count
    bs_write1( &s, 0 );             // marker
    bs_write( &s, 7, MPEG_TS_PAYLOAD_TYPE ); // payload type
    bs_write( &s, 16, p_rtp->seq++ ); // sequence number
    bs_write32( &s, timestamp / 300 ); // timestamp
    bs_write32( &s, p_rtp->ssrc );    // ssrc
    bs_flush( &s );

    memcpy( &pkt[RTP_HEADER_SIZE], data, len );

    if( udp_write( p_rtp->udp_handle, pkt, RTP_HEADER_SIZE+TS_PACKETS_SIZE ) < 0 )
        return -1;

    p_rtp->pkt_cnt++;
    p_rtp->octet_cnt += len;

    return 0;
}
开发者ID:gz818,项目名称:obe-rt,代码行数:28,代码来源:ip.c

示例4: xavs_sei_version_write

void
xavs_sei_version_write (xavs_t * h, bs_t * s)
{
  int i;
  // random ID number generated according to ISO-11578
  const uint8_t uuid[16] = {
    0xdc, 0x45, 0xe9, 0xbd, 0xe6, 0xd9, 0x48, 0xb7,
    0x96, 0x2c, 0xd8, 0x20, 0xd9, 0x23, 0xee, 0xef
  };
  char version[1200];
  int length;
  char *opts = xavs_param2string (&h->param, 0);

  sprintf (version, "xavs -  %d%s - AVS video codec - " "Copyleft 2009 - http://xavs.sourceforge.net - options: %s", XAVS_BUILD, XAVS_VERSION, opts);
  xavs_free (opts);
  length = (int) strlen (version) + 1 + 16;

  bs_write (s, 8, 0x5);         // payload_type = user_data_unregistered
  // payload_size
  for (i = 0; i <= length - 255; i += 255)
    bs_write (s, 8, 255);
  bs_write (s, 8, length - i);

  for (i = 0; i < 16; i++)
    bs_write (s, 8, uuid[i]);
  for (i = 0; i < length - 16; i++)
    bs_write (s, 8, version[i]);

  bs_rbsp_trailing (s);
}
开发者ID:Distrotech,项目名称:xavs,代码行数:30,代码来源:set.c

示例5: x264_sei_version_write

void x264_sei_version_write( bs_t *s )
{
    int i;
    // random ID number generated according to ISO-11578
    const uint8_t uuid[16] = {
        0xdc, 0x45, 0xe9, 0xbd, 0xe6, 0xd9, 0x48, 0xb7,
        0x96, 0x2c, 0xd8, 0x20, 0xd9, 0x23, 0xee, 0xef
    };
    char version[256];
    int length;
    sprintf( version, "x264 - core %d%s - H.264/MPEG-4 AVC codec - Copyleft 2005 - http://www.videolan.org/x264.html",
             X264_BUILD, X264_VERSION );
    length = strlen(version)+1+16;

    bs_write( s, 8, 0x5 ); // payload_type = user_data_unregistered
    while( length > 255 )
        bs_write( s, 8, 255 ), length -= 255;
    bs_write( s, 8, length ); // payload_size

    for( i = 0; i < 16; i++ )
        bs_write( s, 8, uuid[i] );
    for( i = 0; i < length-16; i++ )
        bs_write( s, 8, version[i] );

    bs_rbsp_trailing( s );
}
开发者ID:JamesLinus,项目名称:x264-1,代码行数:26,代码来源:set.c

示例6: write_rtcp_pkt

static int write_rtcp_pkt( hnd_t handle )
{
    obe_rtp_ctx *p_rtp = handle;
    uint64_t ntp_time = obe_ntp_time();
    uint8_t pkt[100];
    bs_t s;
    bs_init( &s, pkt, RTCP_PACKET_SIZE );

    bs_write( &s, 2, RTP_VERSION ); // version
    bs_write1( &s, 0 );             // padding
    bs_write( &s, 5, 0 );           // reception report count
    bs_write( &s, 8, RTCP_SR_PACKET_TYPE ); // packet type
    bs_write( &s, 8, 6 );           // length (length in words - 1)
    bs_write32( &s, p_rtp->ssrc );  // ssrc
    bs_write32( &s, ntp_time / 1000000 ); // NTP timestamp, most significant word
    bs_write32( &s, ((ntp_time % 1000000) << 32) / 1000000 ); // NTP timestamp, least significant word
    bs_write32( &s, 0 );            // RTP timestamp FIXME
    bs_write32( &s, p_rtp->pkt_cnt ); // sender's packet count
    bs_write32( &s, p_rtp->octet_cnt ); // sender's octet count
    bs_flush( &s );

    if( udp_write( p_rtp->udp_handle, pkt, RTCP_PACKET_SIZE ) < 0 )
        return -1;

    return 0;
}
开发者ID:gz818,项目名称:obe-rt,代码行数:26,代码来源:ip.c

示例7: write_itu_t_codes

static void write_itu_t_codes( bs_t *s )
{
    const int country_code      = 0xb5;
    const int provider_code     = 0x31;

    bs_write( s,  8, country_code );  // itu_t_t35_country_code
    bs_write( s, 16, provider_code ); // itu_t_t35_provider_code
}
开发者ID:billhibazzz,项目名称:broadcastencoder,代码行数:8,代码来源:cc.c

示例8: write_rbsp_trailing_bits

//7.3.2.11 RBSP trailing bits syntax
void write_rbsp_trailing_bits(bs_t* b)
{
	int rbsp_stop_one_bit = 1;
	int rbsp_alignment_zero_bit = 0;

	bs_write(b, 1, rbsp_stop_one_bit); // equal to 1
	while (!bs_byte_aligned(b))
	{
		bs_write(b, 1, rbsp_alignment_zero_bit); // equal to 0
	}
}
开发者ID:elgamar,项目名称:openencodevfw,代码行数:12,代码来源:bitstream.cpp

示例9: write_708_cc

static int write_708_cc( obe_user_data_t *user_data, uint8_t *start, int cc_count )
{
    bs_t s;
    uint8_t temp[1000];
    const char *user_identifier = "GA94";
    const int data_type_code    = 0x03;

    /* TODO: when MPEG-2 is added make this do the right thing */
    /* FIXME: enable echostar captions and add more types */

    bs_init( &s, temp, 1000 );

    /* N.B MPEG-4 only */
    write_itu_t_codes( &s );

    for( int i = 0; i < 4; i++ )
        bs_write( &s, 8, user_identifier[i] ); // user_identifier

    bs_write( &s, 8, data_type_code ); // user_data_type_code

    // user_data_type_structure (echostar)
    // cc_data
    bs_write1( &s, 1 );     // reserved
    bs_write1( &s, 1 );     // process_cc_data_flag
    bs_write1( &s, 0 );     // zero_bit / additional_data_flag
    bs_write( &s, 5, cc_count ); // cc_count
    bs_write( &s, 8, 0xff ); // reserved

    write_bytes( &s, start, cc_count*3 );

    bs_write( &s, 8, 0xff ); // marker_bits
    bs_flush( &s );

    user_data->type = USER_DATA_AVC_REGISTERED_ITU_T35;
    user_data->len = bs_pos( &s ) >> 3;

    free( user_data->data );

    user_data->data = malloc( user_data->len );
    if( !user_data->data )
    {
        syslog( LOG_ERR, "Malloc failed\n" );
        return -1;
    }

    memcpy( user_data->data, temp, user_data->len );

    return 0;
}
开发者ID:billhibazzz,项目名称:broadcastencoder,代码行数:49,代码来源:cc.c

示例10: x264_sps_write

void x264_sps_write( bs_t *s, x264_sps_t *sps )
{
    bs_realign( s );
    bs_write( s, 8, sps->i_profile_idc );
    bs_write1( s, sps->b_constraint_set0 );
    bs_write1( s, sps->b_constraint_set1 );
    bs_write1( s, sps->b_constraint_set2 );
    bs_write1( s, sps->b_constraint_set3 );

    bs_write( s, 4, 0 );    /* reserved */

    bs_write( s, 8, sps->i_level_idc );

    bs_write_ue( s, sps->i_id );

    if( sps->i_profile_idc >= PROFILE_HIGH )
    {
        bs_write_ue( s, sps->i_chroma_format_idc );
        if( sps->i_chroma_format_idc == CHROMA_444 )
            bs_write1( s, 0 ); // separate_colour_plane_flag
        bs_write_ue( s, BIT_DEPTH-8 ); // bit_depth_luma_minus8
        bs_write_ue( s, BIT_DEPTH-8 ); // bit_depth_chroma_minus8
        bs_write1( s, sps->b_qpprime_y_zero_transform_bypass );
        bs_write1( s, 0 ); // seq_scaling_matrix_present_flag
    }

    bs_write_ue( s, sps->i_log2_max_frame_num - 4 );
    bs_write_ue( s, sps->i_poc_type );
    if( sps->i_poc_type == 0 )
        bs_write_ue( s, sps->i_log2_max_poc_lsb - 4 );
    bs_write_ue( s, sps->i_num_ref_frames );
    bs_write1( s, sps->b_gaps_in_frame_num_value_allowed );
    bs_write_ue( s, sps->i_mb_width - 1 );
    bs_write_ue( s, (sps->i_mb_height >> !sps->b_frame_mbs_only) - 1);
    bs_write1( s, sps->b_frame_mbs_only );
    if( !sps->b_frame_mbs_only )
        bs_write1( s, sps->b_mb_adaptive_frame_field );
    bs_write1( s, sps->b_direct8x8_inference );

    bs_write1( s, sps->b_crop );
    if( sps->b_crop )
    {
        int h_shift = sps->i_chroma_format_idc == CHROMA_420 || sps->i_chroma_format_idc == CHROMA_422;
        int v_shift = sps->i_chroma_format_idc == CHROMA_420;
        bs_write_ue( s, sps->crop.i_left   >> h_shift );
        bs_write_ue( s, sps->crop.i_right  >> h_shift );
        bs_write_ue( s, sps->crop.i_top    >> v_shift );
        bs_write_ue( s, sps->crop.i_bottom >> v_shift );
    }
开发者ID:12307,项目名称:PushRTMPStreamSync,代码行数:49,代码来源:set.c

示例11: scaling_list_write

static void scaling_list_write( bs_t *s, x264_pps_t *pps, int idx )
{
    const int len = idx<4 ? 16 : 64;
    const int *zigzag = idx<4 ? x264_zigzag_scan4 : x264_zigzag_scan8;
    const uint8_t *list = pps->scaling_list[idx];
    const uint8_t *def_list = (idx==CQM_4IC) ? pps->scaling_list[CQM_4IY]
                            : (idx==CQM_4PC) ? pps->scaling_list[CQM_4PY]
                            : x264_cqm_jvt[idx];
    int j;
    if( memcmp( list, def_list, len ) )
    {
        bs_write( s, 1, 1 ); // scaling_list_present_flag
        for( j = 0; j < len; j++ )
            bs_write_se( s, list[zigzag[j]] - (j>0 ? list[zigzag[j-1]] : 8) ); // delta
    }
    else
        bs_write( s, 1, 0 ); // scaling_list_present_flag
}
开发者ID:JamesLinus,项目名称:x264-1,代码行数:18,代码来源:set.c

示例12: x264_filler_write

void x264_filler_write( x264_t *h, bs_t *s, int filler )
{
    bs_realign( s );

    for( int i = 0; i < filler; i++ )
        bs_write( s, 8, 0xff );

    bs_rbsp_trailing( s );
    bs_flush( s );
}
开发者ID:submux,项目名称:obe-vod,代码行数:10,代码来源:set.c

示例13: x264_sei_write

void x264_sei_write( bs_t *s, uint8_t *payload, int payload_size, int payload_type )
{
    int i;

    bs_realign( s );

    for( i = 0; i <= payload_type-255; i += 255 )
        bs_write( s, 8, 255 );
    bs_write( s, 8, payload_type-i );

    for( i = 0; i <= payload_size-255; i += 255 )
        bs_write( s, 8, 255 );
    bs_write( s, 8, payload_size-i );

    for( i = 0; i < payload_size; i++ )
        bs_write( s, 8, payload[i] );

    bs_rbsp_trailing( s );
    bs_flush( s );
}
开发者ID:12307,项目名称:PushRTMPStreamSync,代码行数:20,代码来源:set.c

示例14: x264_sei_buffering_period_write

void x264_sei_buffering_period_write( x264_t *h, bs_t *s )
{
    x264_sps_t *sps = h->sps;
    bs_t q;
    uint8_t tmp_buf[100];
    bs_init( &q, tmp_buf, 100 );

    bs_realign( &q );
    bs_write_ue( &q, sps->i_id );

    if( sps->vui.b_nal_hrd_parameters_present )
    {
        bs_write( &q, sps->vui.hrd.i_initial_cpb_removal_delay_length, h->initial_cpb_removal_delay );
        bs_write( &q, sps->vui.hrd.i_initial_cpb_removal_delay_length, h->initial_cpb_removal_delay_offset );
    }

    bs_align_10( &q );
    bs_flush( &q );

    x264_sei_write( s, tmp_buf, bs_pos( &q ) / 8, SEI_BUFFERING_PERIOD );
}
开发者ID:submux,项目名称:obe-vod,代码行数:21,代码来源:set.c

示例15: xavs_i_picture_write

void
xavs_i_picture_write (bs_t * s, xavs_i_pic_header_t * ih, xavs_seq_header_t * sqh)
{
  bs_write (s, 8, 0xB3);        //ih->i_i_picture_start_code);
  bs_write (s, 16, ih->i_bbv_delay);
  bs_write1 (s, ih->b_time_code_flag);
  if (ih->b_time_code_flag)
    bs_write (s, 24, ih->i_time_code);
  bs_write1 (s, 1);             //marker bit
  bs_write (s, 8, ih->i_picture_distance);
  if (sqh->b_low_delay)
    bs_write_ue (s, 1);         //ih->i_bbv_check_times);
  bs_write1 (s, ih->b_progressive_frame);
  if (!ih->b_progressive_frame)
    bs_write1 (s, ih->b_picture_structure);

  bs_write1 (s, 1);             //ih->b_top_field_first);
  bs_write1 (s, 0);             //ih->b_repeat_first_field);
  bs_write1 (s, ih->b_fixed_picture_qp);
  bs_write (s, 6, ih->i_picture_qp);
  //if(!ih->b_progressive_frame && !ih->b_picture_structure)
  //bs_write1( s, ih->b_skip_mode_flag);
  bs_write (s, 4, ih->i_reserved_bits);
  bs_write1 (s, ih->b_loop_filter_disable);
  if (!ih->b_loop_filter_disable)
    bs_write1 (s, ih->b_loop_filter_parameter_flag);
  if (ih->b_loop_filter_parameter_flag)
  {
    bs_write_se (s, ih->i_alpha_c_offset);
    bs_write_se (s, ih->i_beta_offset);
  }
  bs_rbsp_trailing (s);
}
开发者ID:Distrotech,项目名称:xavs,代码行数:33,代码来源:set.c


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