~ubuntu-branches/ubuntu/trusty/libav/trusty

« back to all changes in this revision

Viewing changes to libavcodec/h264_ps.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Jonathan Nieder, Reinhard Tartler
  • Date: 2011-05-13 12:31:33 UTC
  • mfrom: (1.2.2 upstream)
  • mto: (1.3.4 sid)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20110513123133-zqcsj91sf5489y4s
Tags: 4:0.7~beta2-1
[ Jonathan Nieder ]
* only install doc/APIChanges in *-dev and libav-doc packages
* move note on source package lineage to README.Debian
* install NEWS.Debian in libavcodec-dev
* use dpkg source format 3.0 (quilt)
* allow "debian/rules clean" as unprivileged user

[ Reinhard Tartler ]
* New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
 {2, 1},
58
58
};
59
59
 
60
 
const uint8_t ff_h264_chroma_qp[52]={
61
 
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,
62
 
   12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,
63
 
   28,29,29,30,31,32,32,33,34,34,35,35,36,36,37,37,
64
 
   37,38,38,38,39,39,39,39
 
60
#define QP(qP,depth) ( (qP)+6*((depth)-8) )
 
61
 
 
62
#define CHROMA_QP_TABLE_END(d) \
 
63
     QP(0,d),  QP(1,d),  QP(2,d),  QP(3,d),  QP(4,d),  QP(5,d),\
 
64
     QP(6,d),  QP(7,d),  QP(8,d),  QP(9,d), QP(10,d), QP(11,d),\
 
65
    QP(12,d), QP(13,d), QP(14,d), QP(15,d), QP(16,d), QP(17,d),\
 
66
    QP(18,d), QP(19,d), QP(20,d), QP(21,d), QP(22,d), QP(23,d),\
 
67
    QP(24,d), QP(25,d), QP(26,d), QP(27,d), QP(28,d), QP(29,d),\
 
68
    QP(29,d), QP(30,d), QP(31,d), QP(32,d), QP(32,d), QP(33,d),\
 
69
    QP(34,d), QP(34,d), QP(35,d), QP(35,d), QP(36,d), QP(36,d),\
 
70
    QP(37,d), QP(37,d), QP(37,d), QP(38,d), QP(38,d), QP(38,d),\
 
71
    QP(39,d), QP(39,d), QP(39,d), QP(39,d)
 
72
 
 
73
const uint8_t ff_h264_chroma_qp[3][QP_MAX_NUM+1] = {
 
74
    {
 
75
        CHROMA_QP_TABLE_END(8)
 
76
    },
 
77
    {
 
78
        0, 1, 2, 3, 4, 5,
 
79
        CHROMA_QP_TABLE_END(9)
 
80
    },
 
81
    {
 
82
        0, 1, 2, 3,  4,  5,
 
83
        6, 7, 8, 9, 10, 11,
 
84
        CHROMA_QP_TABLE_END(10)
 
85
    },
65
86
};
66
87
 
67
88
static const uint8_t default_scaling4[2][16]={
419
440
}
420
441
 
421
442
static void
422
 
build_qp_table(PPS *pps, int t, int index)
 
443
build_qp_table(PPS *pps, int t, int index, const int depth)
423
444
{
424
445
    int i;
425
 
    for(i = 0; i < 52; i++)
426
 
        pps->chroma_qp_table[t][i] = ff_h264_chroma_qp[av_clip(i + index, 0, 51)];
 
446
    const int max_qp = 51 + 6*(depth-8);
 
447
    for(i = 0; i < max_qp+1; i++)
 
448
        pps->chroma_qp_table[t][i] = ff_h264_chroma_qp[depth-8][av_clip(i + index, 0, max_qp)];
427
449
}
428
450
 
429
451
int ff_h264_decode_picture_parameter_set(H264Context *h, int bit_length){
430
452
    MpegEncContext * const s = &h->s;
431
453
    unsigned int pps_id= get_ue_golomb(&s->gb);
432
454
    PPS *pps;
 
455
    const int qp_bd_offset = 6*(h->sps.bit_depth_luma-8);
433
456
 
434
457
    if(pps_id >= MAX_PPS_COUNT) {
435
458
        av_log(h->s.avctx, AV_LOG_ERROR, "pps_id (%d) out of range\n", pps_id);
494
517
 
495
518
    pps->weighted_pred= get_bits1(&s->gb);
496
519
    pps->weighted_bipred_idc= get_bits(&s->gb, 2);
497
 
    pps->init_qp= get_se_golomb(&s->gb) + 26;
498
 
    pps->init_qs= get_se_golomb(&s->gb) + 26;
 
520
    pps->init_qp= get_se_golomb(&s->gb) + 26 + qp_bd_offset;
 
521
    pps->init_qs= get_se_golomb(&s->gb) + 26 + qp_bd_offset;
499
522
    pps->chroma_qp_index_offset[0]= get_se_golomb(&s->gb);
500
523
    pps->deblocking_filter_parameters_present= get_bits1(&s->gb);
501
524
    pps->constrained_intra_pred= get_bits1(&s->gb);
514
537
        pps->chroma_qp_index_offset[1]= pps->chroma_qp_index_offset[0];
515
538
    }
516
539
 
517
 
    build_qp_table(pps, 0, pps->chroma_qp_index_offset[0]);
518
 
    build_qp_table(pps, 1, pps->chroma_qp_index_offset[1]);
 
540
    build_qp_table(pps, 0, pps->chroma_qp_index_offset[0], h->sps.bit_depth_luma);
 
541
    build_qp_table(pps, 1, pps->chroma_qp_index_offset[1], h->sps.bit_depth_luma);
519
542
    if(pps->chroma_qp_index_offset[0] != pps->chroma_qp_index_offset[1])
520
543
        pps->chroma_qp_diff= 1;
521
544