Unified · Split
| @@ -813,11 +813,11 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 812 unmodified lines | ||
| 813 | 813 | uint16_t *dstrp = ( uint16_t *)(out->data[r] + y * out->linesize[r]); |
| 814 | 814 | uint16_t *dstgp = ( uint16_t *)(out->data[g] + y * out->linesize[g]); |
| 815 | 815 | uint16_t *dstbp = ( uint16_t *)(out->data[b] + y * out->linesize[b]); |
| 816 | − uint16_t *dstap = ( uint16_t *)(out->data[a] + y * out->linesize[a]); | |
| 816 | + uint16_t *dstap = ( uint16_t *)(step == 4 ? out->data[a] + y * out->linesize[a] : NULL); | |
| 817 | 817 | const uint16_t *srcrp = (const uint16_t *)(in ->data[r] + y * in->linesize[r]); |
| 818 | 818 | const uint16_t *srcgp = (const uint16_t *)(in ->data[g] + y * in->linesize[g]); |
| 819 | 819 | const uint16_t *srcbp = (const uint16_t *)(in ->data[b] + y * in->linesize[b]); |
| 820 | − const uint16_t *srcap = (const uint16_t *)(in ->data[a] + y * in->linesize[a]); | |
| 820 | + const uint16_t *srcap = (const uint16_t *)(step == 4 ? in ->data[a] + y * in->linesize[a] : NULL); | |
| 821 | 821 | |
| 822 | 822 | for (x = 0; x < in->width; x++) { |
| 823 | 823 | dstrp[x] = curves->graph[R][srcrp[x]]; |
| @@ -831,11 +831,13 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 7 unmodified lines | ||
| 831 | 831 | uint8_t *dstr = out->data[r] + slice_start * out->linesize[r]; |
| 832 | 832 | uint8_t *dstg = out->data[g] + slice_start * out->linesize[g]; |
| 833 | 833 | uint8_t *dstb = out->data[b] + slice_start * out->linesize[b]; |
| 834 | − uint8_t *dsta = out->data[a] + slice_start * out->linesize[a]; | |
| 834 | + uint8_t *dsta = step == 4 ? out->data[a] | |
| 835 | + + slice_start * out->linesize[a] : NULL; | |
| 835 | 836 | const uint8_t *srcr = in->data[r] + slice_start * in->linesize[r]; |
| 836 | 837 | const uint8_t *srcg = in->data[g] + slice_start * in->linesize[g]; |
| 837 | 838 | const uint8_t *srcb = in->data[b] + slice_start * in->linesize[b]; |
| 838 | − const uint8_t *srca = in->data[a] + slice_start * in->linesize[a]; | |
| 839 | + const uint8_t *srca = step == 4 ? in->data[a] | |
| 840 | + + slice_start * in->linesize[a] : NULL; | |
| 839 | 841 | |
| 840 | 842 | for (y = slice_start; y < slice_end; y++) { |
| 841 | 843 | for (x = 0; x < in->width; x++) { |
| @@ -848,11 +850,13 @@ static int filter_slice_planar(AVFilterContext *ctx, void *arg, int jobnr, int n · 6 unmodified lines | ||
| 848 | 850 | dstr += out->linesize[r]; |
| 849 | 851 | dstg += out->linesize[g]; |
| 850 | 852 | dstb += out->linesize[b]; |
| 851 | − dsta += out->linesize[a]; | |
| 852 | 853 | srcr += in ->linesize[r]; |
| 853 | 854 | srcg += in ->linesize[g]; |
| 854 | 855 | srcb += in ->linesize[b]; |
| 855 | − srca += in ->linesize[a]; | |
| 856 | + if (step == 4) { | |
| 857 | + dsta += out->linesize[a]; | |
| 858 | + srca += in ->linesize[a]; | |
| 859 | + } | |
| 856 | 860 | } |
| 857 | 861 | } |
| 858 | 862 | return 0; |