Ticket #2859: patchlayout.diff

File patchlayout.diff, 705 bytes (added by Carl Eugen Hoyos, 13 years ago)
  • libswresample/rematrix.c

    diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c
    index f13c240..489c119 100644
    a b static int even(int64_t layout){  
    8282}
    8383
    8484static int clean_layout(SwrContext *s, int64_t layout){
    85     if((layout & AV_CH_LAYOUT_STEREO_DOWNMIX) == AV_CH_LAYOUT_STEREO_DOWNMIX)
    86         return AV_CH_LAYOUT_STEREO;
     85    if((layout & AV_CH_LAYOUT_STEREO_DOWNMIX) == AV_CH_LAYOUT_STEREO_DOWNMIX &&
     86        !(layout >> av_log2(FFMAX(AV_CH_STEREO_LEFT, AV_CH_STEREO_RIGHT)) + 1))
     87        return layout & ~(AV_CH_LAYOUT_STEREO_DOWNMIX);
    8788
    8889    if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) {
    8990        char buf[128];